我在ScrollView内部的视图中有一个按钮:
UIScrollView
-ContentView
--PhoneNumberView
---UIButton
如果禁用ScrollView的滚动功能,则按钮会正常点击。但是,如果启用滚动,则按钮似乎被禁用。
这是我发送ScrollView的内容大小的方式:
var contentRect = CGRectZero;
for view in self.contentView.subviews {
contentRect = CGRectUnion(contentRect, view.frame)
}
scrollView.contentSize = contentRect.size
scrollView.contentSize.height = scrollView.contentSize.height+20
我还设置了这些属性
scrollView.userInteractionEnabled = true
scrollView.exclusiveTouch = true
scrollView.canCancelContentTouches = true
scrollView.delaysContentTouches = true
我终于尝试创建了UIScrollView的子类,我最终得到了这个:
class myScrollView: UIScrollView {
override func touchesShouldCancelInContentView(view: UIView) -> Bool {
return false
}
}
但是只要有任何滚动,按钮就不会处于活动状态。
我该如何解决?
答案 0 :(得分:2)
答案 1 :(得分:0)
通过设置
scrollView.exclusiveTouch = true
您告诉scrollView专门处理触摸,因此触摸无法覆盖其子视图,因此请将此属性设置为false
这行代码
scrollView.delaysContentTouches = true
基本上延迟了对滚动视图子视图的触摸,如果您希望按钮立即响应,则将此属性设置为false
。
答案 2 :(得分:0)
将所有子视图从ContentView拖到ScrollView。并隐藏ContentView。确保ContentView(scrollView的ContainerView)也应该是scrollView的子视图。
例如:
UIScrollView中
--PhoneNumberView
---的UIButton
-ContentView(此视图应隐藏)