如何将UILongPressGestureRecognizer添加到UITextField?

6

我试图将UILongPressGestureRecognizer添加到页面上的一个UITextField中,但长按UiTextField时它不会调用选择器方法。我将其添加到UItextField中,但当我长按文本字段时它不会调用选择器方法,而是显示放大镜。

[self.tfCustomerStreet addGestureRecognizer:LongPressgesture];

但如果我将它添加到视图中,它可以正常工作并调用选择器方法。

[[self view] addGestureRecognizer:LongPressgesture];

在 ViewDidLoad 中的初始化代码

UILongPressGestureRecognizer *LongPressgesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(LongPressgesture:)];
    [LongPressgesture setMinimumPressDuration:2.0];

.

// Long press gesture reconizer
- (void)LongPressgesture:(UILongPressGestureRecognizer *)recognizer 
{
    if (recognizer.state == UIGestureRecognizerStateEnded) {
        NSLog(@"Long press Ended .................");
    }
    else {
        NSLog(@"Long press detected .....................");
    }        
}

请告诉我如何使它与UITextField配合使用。
1个回答

8
如果您删除[LongPressgesture setMinimumPressDuration:2.0];,它将起作用。因为选项卡手势将被调用以开始编辑textField。或者只需实现此手势委托函数即可。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

返回YES表示同时识别是允许的。祝您愉快 :)

谢谢Malek,现在已经开始移除[LongPressgesture setMinimumPressDuration:2.0]的代码了,但是如果添加你提到的代码,它就不起作用。不过问题已经解决了,谢谢 :) - Azhar
你好,但是对于第二个解决方案,你是否在.h中添加了UIGestureRecognizerDelegate - Malek_Jundi
1
还需要设置 LongPressgesture.delegate = self; - Malek_Jundi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接