iphone - 如何像 UIScrollView 一样取消触摸?

标签 iphone ios cocoa-touch ipad uiscrollview

我创建了一个应用程序,您可以在其中拖动 View 。我需要 UIScrollView 不适合的特殊行为。但现在的问题是,其中一些 View 响应触摸事件,当我拖动它们时,我必须取消触摸。

UIScrollView 能够取消其 subview 中的触摸,这样当用户按下按钮然后开始滚动时,一旦用户滚动得足够多, ScrollView 就会取消按钮中的触摸,以便按钮不触发操作。

一种方法是对每个 subview 进行子类化,并在所有触摸处理方法中使用 bool 标志,但这会非常乏味且肮脏。

是否有更好的方法通过 API 来取消 subview 中的触摸,就像 UIScrollView 那样?

最佳答案

它通过 UIGestureRecognizer API 取消触摸。 UIScrollView实际上在底层使用了UIPanGestureRecognizer。 http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizer_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40009279-CH1-SW9

UIGestureRecognizer 还能够延迟触摸开始发送和触摸结束。

@property(nonatomic) BOOL delaysTouchesBegan
@property(nonatomic) BOOL delaysTouchesEnded

为了执行拖动手势,我现在使用 UIPanGestureRecognizer,如 UIScrollView。这样做会让你掌握所有的小技巧。

关于iphone - 如何像 UIScrollView 一样取消触摸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234238/

相关文章:

iphone - UIWebView 和超时

iphone - 立即显示 ActivityIndi​​cator

iphone - 有没有办法在 iOS 上读取 HDMI 音频?

iphone - 将数据添加到 NSDictionary...SRSLY?难道就没有更快的方法吗?

iphone - UIActionSheet 像按钮

ios背景白色渐变

iphone - 在 iOS 中将 HTML 转换为 NSAttributedString

ios - 媒体查询不适用于 iphone 5 横向

ios - 无法使用 Alamofire 方案构建工作区 Alamofire

ios - 应用程序在设置 IdleTimerDisabled : NO 时直接进入空闲状态