热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么UILongPressGestureRecognizer无法正常工作,而UITapGestureRecognizer却能正常运行?

我在一个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的注释中,有更详细的说明:

在按下手势之前,需要完全敲击的次数。

希望这些信息能帮助你解决问题。


推荐阅读
author-avatar
手机用户2502903077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有