在UIScrollView中同时允许单击手势识别器和双击

Max*_*One 1 objective-c uiscrollview ios

所以我在UIScrollView里面有一个UIImageView,我需要捕获它们: - 单击手势 - UIImageView的双击手势

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

到目前为止,如果我将单击手势识别器添加到滚动视图,则立即识别单击并且不能识别双击.

如果我将单击手势识别器添加到imageview,它从不接收任何动作,但双击工作

任何建议表示赞赏,谢谢..

Tej*_*hna 6

试试这段代码,

目标 - C.

 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];
Run Code Online (Sandbox Code Playgroud)

Swift 3.0

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)
Run Code Online (Sandbox Code Playgroud)