首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何响应UITextField上的触摸事件?

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

Stack Overflow用户
提问于 2012-01-10 10:06:14
回答 5查看 19.3K关注 0票数 18

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

我不能使用UIControlEventEditingDidBegin,因为它只在字段获得焦点时发生,而这不是我试图检测的。我想知道用户何时抬起手指,以及它是在文本字段的内部还是外部,而不管当前的焦点状态如何。

有谁知道实现这一点的方法吗?

需要说明的是,我尝试过使用addTarget:action:forControlEvents,但它不起作用。通过取消来阻止touch up事件。我想要一种在UITextField使用它并产生取消事件之前检测touch的方法。

此外,如果可能的话,我希望避免创建任何额外的视图。

EN

回答 5

Stack Overflow用户

发布于 2012-01-10 10:12:12

一种大概的方法是创建一个填充设置为clear以覆盖所有空间的UIButton,并在其上面创建一个UITextField。如果用户在文本字段中触摸,文本字段应发送事件,如果用户在文本字段之外触摸,则UIButton将发送事件。

票数 4
EN

Stack Overflow用户

发布于 2012-09-09 01:03:51

很好的答案:Change default touch events for UITextField

使用文本字段的委托,然后在textFieldShouldBeginEditing中执行您想要执行的操作:

您可以返回NO以防止默认行为。

票数 2
EN

Stack Overflow用户

发布于 2015-10-29 17:11:06

您可以为UiView创建类别并覆盖touchesBegan方法,如下所示。

它对于me.And工作得很好,它是这个问题的集中式解决方案。

代码语言:javascript
复制
#import "UIView+Keyboard.h"
@implementation UIView(Keyboard)

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.window endEditing:true];
    [super touchesBegan:touches withEvent:event];
}


@end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8797726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档