【问题标题】:Pass touch from UIScrollView to superview (UIButton)将触摸从 UIScrollView 传递到 superview (UIButton)
【发布时间】:2012-02-08 11:33:50
【问题描述】:
可能是重复的,但我找不到我今晚搜索问题的确切答案...
我有一个UIButton,其中包含一个UIScrollView,所以按钮是超级视图。
我要做的就是将单击事件从UIScrollView 子视图传递到UIButton 超级视图,并让UIButton 处理它,就像用户直接点击按钮一样。
将滚动视图的userInteractionEnabled 属性设置为NO 对我不起作用,因为用户可以滚动内容。这样做会破坏滚动视图的目的。
这可能吗?谢谢!
【问题讨论】:
标签:
iphone
ios
cocoa-touch
uiview
uiscrollview
【解决方案1】:
通常您不会将滚动视图放在按钮中。而是考虑使用 UIView 作为滚动视图的超级视图。或者告诉我们更多关于你的用例,这样我就能理解你为什么要这样设计。
【解决方案2】:
就像火心鸟说的那样,这样发表你的观点绝对不常见。
如果您对此非常坚持,您可以使用 UITapGestureRecognizer 并让它调用按钮的目标和选择器。
如果你想包括按钮高亮等,那么你可能必须继承 UITapGestureRecognizer 并将 touchesEnded 转发给按钮。
【解决方案3】:
创建scrollview的子类并覆盖
-(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
return YES;
}
还继承了 uibutton(Your superview) 并在 touches 中处理 touches 开始。