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 中不起作用