为UITextField实现touchesBegan

时间:2009-12-18 11:51:14

标签: iphone uitextfield

触摸发生时你能捕捉到TextField事件吗?到目前为止,我没有看到Touch事件被注册到TextField。例如,

    * (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{
UITouch *touch = [event allTouches] anyObject;

if (touch view == TextFieldView) {
do somthing.....
}

这个我想要实现的虚拟代码是我想要一个在用户触摸文本字段一段时间后被触发的方法。 如果是,那么???

启发我。

Thnx提前。

3 个答案:

答案 0 :(得分:5)

右键单击IB中的UITextField并将Touch Down事件链接到所需的IBAction

答案 1 :(得分:2)

我刚刚通过编写捕获触摸的UITextField子类的子类来测试它。

@interface TouchTestTextField : UITextField {}
@end

#import "TouchTestTextField.h"
@implementation TouchTestTextField

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"touchesBegan");
    NSLog(@"touches=%@,event=%@",touches,event);
}

@end

它可以轻松捕捉触摸并将文本字段显示为触摸视图。

答案 2 :(得分:1)

您可以尝试在父视图中覆盖[parentView hitTest:withEvent:],并在app / UI处于适当状态时,基于每个触摸声明处理textField的触摸。

我认为触摸的所有touchesMoved / Canceled / Ended事件都会转到父级而不是文本字段,直到下一次触摸。但测试一下,看看。

修改

或者,如果希望父级处理触摸而不是文本字段,并且希望TextField处理触摸时将其设置为= YES,则只需设置userInteractionEnabled = NO。请参阅“iPhone应用程序编程指南”的“事件处理”部分。