[英]UITextField not resigning keyboard
我一直在牆上抨擊我的頭一段時間,但我還是沒有設法解決這個問題。
我有一個modalViewController,上面有一個UITextField(我們稱之為myTroubleMaker)和其他一些非重要的組件。 當我加載modalVC時,我初始化UITextField並允許它立即成為firstResponder,我也將它的委托設置為modalVC(self)。 modalView可以很好地加載UITextField並立即打開鍵盤。 但是,當我觸摸/點擊屏幕上的任何其他位置時,它不會解除鍵盤。 它確實將焦點從UITextField切換出來並重新啟動firstResponder但鍵盤沒有消失。
造成這個棘手問題的原因是什么? 我該如何正確解決這個問題?
碼:
。H
@interface myModalViewController : UIViewController <UItextFieldDelegate>
{
UITextField *myTroubleMaker;
}
@property (nonatomic, retain) UITextField *myTroubleMaker;
@end
.M
//I synthesized it properly
-(void)loadView
{
[super loadView];
self.myTroubleMaker = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 300, 50)];
self.myTroubleMaker.backgroundColor = [UIColor clearColor];
self.myTroubleMaker.textColor = [UIColor whiteColor];
self.myTroubleMaker.text = @"";
self.myTroubleMaker.font = [UIFont systemFontOfSize:self.myTroubleMaker.frame.size.height - 8];
self.myTroubleMaker.adjustsFontSizeToFitWidth = YES;
self.myTroubleMaker.minimumFontSize = 0.0;
self.myTroubleMaker.textAlignment = UITextAlignmentCenter;
self.myTroubleMaker.autocorrectionType = UITextAutocorrectionTypeNo;
self.myTroubleMaker.delegate = self;
self.myTroubleMaker.placeholder = @"I eat ur brainz, yoh!";
self.myTroubleMaker.keyboardType = UIKeyboardTypeDefault;
self.myTroubleMaker.returnKeyType = UIReturnKeyDone;
[self.view addSubview:self.tabNameInputField];
[self.myTroubleMaker becomeFirstResponder];
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
self.tabNameInputField.text = @"";
return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[textField resignFirstResponder];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
{
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == someOtherModalVCComponent) {
//do stuff
if([self.tabNameInputField isFirstResponder])
{
[self.tabNameInputField resignFirstResponder];
}
[self loadGraphics];
}
if ([touch view] != self.myTroubleMaker)
{
if([self.myTroubleMaker isFirstResponder])
{
[self.myTroubleMaker resignFirstResponder];
}
}
}
這一切都按照我想要的方式工作,除了鍵盤的這種思維問題。 即使在我寫這個問題時,我也檢查了類似問題的可能解決方案。
任何幫助,將不勝感激。 我在這里頭疼...
解決了我接受的解決方案。
對於將來的參考,我使用devforums.apple.com/message/425914來獲取我的具體解決方案。 由於我使用navigationController傳遞modalVC,我需要在UINavigationController上創建一個類別並將其方法添加到它,因此它支持自動解除鍵盤。
您可能正在使用UIModalPresentationFormSheet
進行UIModalPresentationFormSheet
。 如果是,那么iPad上的一項功能是鍵盤不會被解雇。
在iOS4上有一個新方法disablesAutomaticKeyboardDismissal:
如果你覆蓋它以擺脫默認行為,它可能會幫助你。
一種選擇是實現自定義UIButton並將其發送到根視圖的后面。 在按鈕的單擊,辭職您的第一響應者。
還有更多解決方案,如其他答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.