UITextField 是不是消耗触摸事件?

Posted

技术标签:

【中文标题】UITextField 是不是消耗触摸事件?【英文标题】:Does UITextField consume touch events?UITextField 是否消耗触摸事件? 【发布时间】:2010-09-16 13:01:19 【问题描述】:

我的视图控制器有 UITextField 对象作为子视图。控制器设置为目标以处理文本字段的 UIControlEventTouchUpOutside 事件。 当文本字段成为第一响应者时,我正在尝试使用此事件处理程序来关闭键盘,但它似乎从未被调用过。像 textFieldShouldReturn 这样的委托方法工作得很好。

为什么文本字段对象不向目标发送操作消息?我为一堆所有的触摸事件尝试了这个方案,但没有运气。或者我必须以某种方式继承 UITextField 才能捕捉到这个事件?

提前致谢!

【问题讨论】:

【参考方案1】:

UITextField 肯定会响应这些事件以处理光标定位等。它可能不会将这些事件“转发”给其父级。如果您需要拦截这些,您可以继承 UITextEvent 并自己捕获这些事件(当然不要忘记调用 [super blablabla] 以保持标准行为。

【讨论】:

【参考方案2】:

也许它只是不响应 UIControlEventTouchUpOutside 事件。我确信它会响应 UIControlEventValueChanged 事件。我认为您可以将透明的自定义 UIButtom 作为背景视图,如果 UIButtom 中有 touchInSideUp,您可以根据需要关闭键盘。

【讨论】:

【参考方案3】:

它响应与 UIButton 相同的事件。看看IB。你也可以考虑使用 UITextFieldDelegate 方法

- (BOOL) textFieldShouldBeginEditing:(UITextField *)textField

【讨论】:

不响应 UIControlEventTouchUpInside

以上是关于UITextField 是不是消耗触摸事件?的主要内容,如果未能解决你的问题,请参考以下文章

UITextField 添加到 UIView 时不响应触摸事件

如何告诉带有 UITextField 的自定义 UIView 接收触摸事件

UITextField 触摸事件在 UIScrollView 中不起作用

监听滑动事件而不消耗任何触摸事件

UIWebView 在 UIScrollView 内消耗触摸事件

iOS - 背景视图正在消耗触摸事件