Dan*_*laM 38 cocoa-touch uibutton uiscrollview ios ios-simulator
我有一个滚动视图,用于滚动它没有全部按钮.现在它确实如此,当拖动鼠标时(在模拟器上)没有任何反应(我认为因为按钮被推动).我怎么能做到这一点?
小智 96
这是因为发生UIButton在子视图UIScrollView(我假设按钮添加在你的情况下子视图)所跟踪的接触,而不是滚动视图.UIScrollView方法touchesShouldCancelInContentView是关键.根据其描述:"如果视图不是UIControl对象,则默认返回值为YES ;否则返回NO.",即对于UIControl对象(按钮),UIScrollView不尝试取消阻止滚动的触摸.
因此,允许滚动按钮:
UIScrollView属性canCancelContentTouches设置为YES.UIScrollView和重写,如下所示:touchesShouldCancelInContentViewYESUIButton- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
if ( [view isKindOfClass:[UIButton class]] ) {
return YES;
}
return [super touchesShouldCancelInContentView:view];
}
Run Code Online (Sandbox Code Playgroud)
pug*_*gia 10
我创建了这个问题寻找这个问题的快速解决方案,我"翻译"它像这样:
class UIButtonScrollView: UIScrollView {
override func touchesShouldCancel(in view: UIView) -> Bool {
if view.isKind(of: UIButton.self) {
return true
}
return super.touchesShouldCancel(in: view)
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
Swift 3解决方案
override func touchesShouldCancel(in view: UIView) -> Bool {
if view is UIButton {
return true
}
return super.touchesShouldCancel(in: view)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9836 次 |
| 最近记录: |