如何响应UITextField上的触摸事件?

the*_*K42 18 uitextfield ios

我想响应触摸事件(特别是UIControlEventTouchUpInsideUIControlEventTouchUpOutside上一个) UITextField,但那是通过唯一的事件UIControlEventTouchCancel.

我不能使用UIControlEventEditingDidBegin,因为它只发生在场增益聚焦时,这不是我想要检测的.无论当前的焦点状态如何,我想知道用户何时抬起他们的手指,以及它是在文本字段的内部还是外部.

有谁知道这样做的方法?

要清楚我已经尝试过使用addTarget:action:forControlEvents并不起作用.取消阻止了修饰事件.我想要一种方法来在消耗它之前检测到触摸UITextField并产生Cancel事件.

另外,如果可能的话,我想避免创建任何额外的视图.

Rya*_*ews -1

以编程方式添加所需事件的目标,或者使用 IB。

UITextField * touchyTextField = [[UITextField alloc] initWithFrame:CGRectMake(0.0, 0.0, 200.0, 21.0)];

[touchyTextField addTarget:self 
                    action:@selector(yourDesiredMethod) 
          forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

  • 不,这绝对行不通。我尝试的第一件事。“yourDesiredMethod”方法永远不会被调用。我可以获取 UIControlEventTouchDown 事件,但是 TouchUp 事件都没有被触发。相反,会触发 UIControlEventTouchCancel 事件。我也不能只使用该事件作为我想要的事件的黑客代理,因为当长按调出放大循环以及其他东西取消用户输入(例如模式对话框或锁定屏幕)时,它也会被触发。 (7认同)