我已经把头撞在墙上一段时间了,但我仍然没有设法解决这个问题。
我有一个 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来获得我的具体解决方案。由于我使用导航控制器传递 modalVC,因此我需要在 UINavigationController 上创建一个类别并将您的方法添加到其中,以便它支持键盘的自动关闭。