【发布时间】:2011-10-21 12:42:33
【问题描述】:
UIView 包含 UIScrollView,其中包含我所有的 UITextFields。当键盘出现时,除了单击“完成”按钮之外,当我单击键盘外部视图中的某个位置时,我希望键盘也消失。我将 UIView 更改为 UIControl 并处理“Touch Down”事件。什么都没发生。是因为它包含滚动视图吗?
【问题讨论】:
标签: iphone ios4 ios-simulator
UIView 包含 UIScrollView,其中包含我所有的 UITextFields。当键盘出现时,除了单击“完成”按钮之外,当我单击键盘外部视图中的某个位置时,我希望键盘也消失。我将 UIView 更改为 UIControl 并处理“Touch Down”事件。什么都没发生。是因为它包含滚动视图吗?
【问题讨论】:
标签: iphone ios4 ios-simulator
最简单的方法是在界面生成器中创建一个 alpha 为 0.0f 并覆盖整个屏幕的 UIButton。当你说 [textField becomeFirstResponder] 时,说 exitButton.hidden = FALSE;
然后创建一个链接到关闭键盘的按钮 ([textField resignFirstResponder]) 的 IBAction,并再次隐藏该按钮。
这样,您就有了一个不可见但可点击的按钮,当您在键盘外敲击时,它会在打字时阻挡其他视图并隐藏键盘,而不必弄乱 touchesBegan。
作为旁注,您的触摸开始不起作用的原因是因为仅当 ios 确定您的视图控制器是触摸所在的最低视图时才会处理触摸。由于触摸在您的滚动视图中,滚动视图处理触摸,而不是您的视图控制器。
【讨论】:
如果您的文本字段在滚动视图中,则取消选中滚动视图的检查属性中的延迟内容触摸。那么它应该可以工作了。
【讨论】: