我想在UITextField
上响应触摸事件(特别是UIControlEventTouchUpInside
和UIControlEventTouchUpOutside
),但唯一通过的事件是UIControlEventTouchCancel
。
我不能使用UIControlEventEditingDidBegin
,因为它只在字段获得焦点时发生,而这不是我试图检测的。我想知道用户何时抬起手指,以及它是在文本字段的内部还是外部,而不管当前的焦点状态如何。
有谁知道实现这一点的方法吗?
需要说明的是,我尝试过使用addTarget:action:forControlEvents
,但它不起作用。通过取消来阻止touch up事件。我想要一种在UITextField
使用它并产生取消事件之前检测touch的方法。
此外,如果可能的话,我希望避免创建任何额外的视图。
发布于 2012-01-10 10:12:12
一种大概的方法是创建一个填充设置为clear以覆盖所有空间的UIButton,并在其上面创建一个UITextField。如果用户在文本字段中触摸,文本字段应发送事件,如果用户在文本字段之外触摸,则UIButton将发送事件。
发布于 2012-09-09 01:03:51
很好的答案:Change default touch events for UITextField
使用文本字段的委托,然后在textFieldShouldBeginEditing中执行您想要执行的操作:
您可以返回NO以防止默认行为。
发布于 2015-10-29 17:11:06
您可以为UiView创建类别并覆盖touchesBegan方法,如下所示。
它对于me.And工作得很好,它是这个问题的集中式解决方案。
#import "UIView+Keyboard.h"
@implementation UIView(Keyboard)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.window endEditing:true];
[super touchesBegan:touches withEvent:event];
}
@end
https://stackoverflow.com/questions/8797726
复制相似问题