首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UIScrollView中允许单点击手势识别器和双击

在UIScrollView中允许单点击手势识别器和双击
EN

Stack Overflow用户
提问于 2015-03-27 10:32:14
回答 2查看 2.6K关注 0票数 3

所以我有一个UIImageView在一个UIScrollView中,我需要同时捕获两个:-单点击手势- UIImageView的双点击手势

双点击手势应该作为缩放动作发送到UIScrollView,单个点击手势被我自己创建的UITapGestureRecognizer捕获。双点击手势比单个点击具有更高的优先级(当有双点击时,放大滚动视图,否则执行单个点击)

到目前为止,如果我将单点击手势识别器添加到滚动视图中,则可以立即识别单个抽头,并且无法识别双抽头。

如果我将单个点击手势识别器添加到图像视图中,它就不会收到任何操作,但是双点击工作。

任何建议都很感谢,谢谢..

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-27 11:19:12

试试这段代码,

目标- C

代码语言:javascript
复制
 UITapGestureRecognizer *singletap = [[UITapGestureRecognizer alloc]
                                                     initWithTarget:self
                                                     action:@selector(singleTap:)];
    singletap.numberOfTapsRequired = 1;
    singletap.numberOfTouchesRequired = 1;

[scrollView addGestureRecognizer:singletap];


UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc]
                                                 initWithTarget:self
                                                 action:@selector(doubleTap:)];
doubleTap.numberOfTapsRequired =2 ;
doubleTap.numberOfTouchesRequired = 1;

[scrollView addGestureRecognizer:doubleTap];



[singleTap requireGestureRecognizerToFail:doubleTap];

Swift 3.0

代码语言:javascript
复制
var singletap = UITapGestureRecognizer(target: self, action: #selector(self.singleTap))
singletap.numberOfTapsRequired = 1
singletap.numberOfTouchesRequired = 1
scrollView.addGestureRecognizer(singletap)
var doubleTap = UITapGestureRecognizer(target: self, action: #selector(self.doubleTap))
doubleTap.numberOfTapsRequired = 2
doubleTap.numberOfTouchesRequired = 1
scrollView.addGestureRecognizer(doubleTap)
singleTap.require(toFail: doubleTap)
票数 6
EN

Stack Overflow用户

发布于 2015-03-27 10:34:07

代码语言:javascript
复制
UITapGestureRecognizer *tapRecognizerForSingleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapAction:)];
[tapRecognizerForSingleTap setNumberOfTapsRequired:1];

UITapGestureRecognizer *tapRecognizerForDoubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapAction:)];
[tapRecognizerForDoubleTap setNumberOfTapsRequired:2];

两者都添加在一个相同的图像视图中,要实现您想要的,只需添加以下一行即可。

代码语言:javascript
复制
[tapRecognizerForSingleTap requireGestureRecognizerToFail:tapRecognizerForDoubleTap];

通过上面的行,你要求的单一水龙头,只有当它不是双龙头时才会被识别。

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

https://stackoverflow.com/questions/29298567

复制
相关文章

相似问题

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