【发布时间】:2013-10-09 19:36:59
【问题描述】:
我设计了一个具有以下层次结构的应用程序:
UIViewController
UIView
UIScrollView
UITextField
在我做的 ViewDidLoad 上:
...
tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
tapGesture.cancelsTouchesInView = NO;
[self.scrollView addGestureRecognizer:tapGesture];
...
在我做的 hideKeyboard 上:
- (void) hideKeyboard {
//Hide keyBoard
[self.view endEditing:YES];
}
乍一看,它运行良好,但不幸的是出现了问题。
当应用程序运行时,我们可以单击 UITextField,键盘按预期显示。如果我们点击 UITextField 之外,会调用 hideKeyboard 方法并按预期关闭键盘,但如果您再次尝试点击 UITextField,则不会再次显示键盘。
我做错了什么?有人知道吗?
【问题讨论】:
-
第二次点击文本框时是不是又调用了
hideKeyboard方法? -
是的@Hejazi,方法又被调用了。
-
好吧,在隐藏键盘之前尝试添加这个条件:
if (![textField pointInside:[gestureRecognizer locationInView:textField] withEvent:nil]) { //Hide keyboard } -
@Hejazi 我再次研究我的代码并找到这种行为的原因。不幸的是,我忘记了我们不使用 UIScrollView 时使用的旧代码。方法 textFieldDidBeginEditing:(UITextFieldDelegate 的协议)中的代码在第一次单击后关闭键盘。感谢您的帮助。
标签: iphone ios objective-c uiscrollview uitextfield