繁体   English   中英

如何检测用户是否只想滚动而不是在UIScrollView内点击UIImageView?

[英]How can I detect if the user just wanted to scroll, and not tap on an UIImageView inside a UIScrollView?

我实现了一个UIScrollView,其中包含一个UIImageView对象的网格。 对于超级视图及其子视图,userInteractionEnabled为YES。 当用户滚动并且他/她的手指触摸UIImageView时,它立即识别出对此的轻击,这不是我想要的;)

在该UIImageView对象内部,我具有以下方法:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    if ([touch view] == self && [touch tapCount] >= 1) {
        NSLog(@"Cooooool! The user touched me!");
    }
}

有没有一种方法可以识别类似“哦,不,用户实际上只想滚动,所以请不要太认真!”? 基本上,我需要的是主屏幕的行为,即手指可能触摸图标,但是当用户开始滚动并抬起手指时,将不会启动触摸的应用程序。

UIScrollView已经为您实现了该行为。 如果用户足够快地拖动,则永远不会调用您的touchesBegan:withEvent:方法。

另一方面,如果用户很慢并且滚动视图将触摸转发到UIImageView子类,但随后仅意识到用户打算滚动,它将调用您的自定义类' -(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event方法。

只需实施它,您就会收到取消触摸的通知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM