作者:手机用户2502903077 | 来源:互联网 | 2024-11-15 17:28
我在一个UIImageView上附加了一个UILongPressGestureRecognizer,但无论如何配置,它都无法检测到长按手势。然而,当我将其替换为UITapGestureRecognizer时,后者却能正常工作。这究竟是怎么回事?
我有一个UIImageView
,上面附加了一个UILongPressGestureRecognizer
,但无论我如何配置手势识别器,它都无法检测到长按手势。然而,当我用UITapGestureRecognizer
替换它时,后者却能正常工作。这可能是由于哪些原因造成的呢?
以下是我是如何配置UILongPressGestureRecognizer
的:
UIImageView *cellView = (UIImageView *)[view viewWithTag:5];
UILongPressGestureRecognizer *lOngPressGestureRec=
[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(cellLongPress:)];
longPressGestureRec.numberOfTapsRequired = 1;
longPressGestureRec.numberOfTouchesRequired = 1;
longPressGestureRec.minimumPressDuration = 0.4;
[cellView addGestureRecognizer:longPressGestureRec];
[longPressGestureRec release];
这是cellLongPress
方法的实现:
- (void)cellLongPress:(UILongPressGestureRecognizer *)recognizer {
// 这个方法从未被调用。
NSLog(@"有人长按了我");
}
看起来非常简单,但到目前为止,我一直没有成功使其正常工作。有什么好的建议吗?
解决方案
numberOfTapsRequired
被设置为1
,这意味着用户在开始长按之前需要先点击一次(手指按下,手指抬起,手指再次按下并保持0.4秒,手势才被识别)。
将numberOfTapsRequired
设置为0
(这是默认值),这样用户就不需要在长按之前进行额外的点击。
关于这个属性,官方文档是这样描述的:
需要识别手势的视图上的轻击次数。
而在UILongPressGestureRecognizer.h
的注释中,有更详细的说明:
在按下手势之前,需要完全敲击的次数。
希望这些信息能帮助你解决问题。