ScrollView中禁用了按钮 -​​ iOS Swift

时间:2016-07-19 09:47:18

标签: ios swift scroll uiscrollview

我在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
    }
}

但是只要有任何滚动,按钮就不会处于活动状态。

我该如何解决?

3 个答案:

答案 0 :(得分:2)

设置ContentView&的颜色。 Scrollview。我认为你设置错误contentsize。而您的PhoneNumberView超出contentsize高度。

修改

enter image description here

enter image description here

enter image description here

enter image description here

答案 1 :(得分:0)

通过设置

scrollView.exclusiveTouch = true

您告诉scrollView专门处理触摸,因此触摸无法覆盖其子视图,因此请将此属性设置为false

这行代码

scrollView.delaysContentTouches = true

基本上延迟了对滚动视图子视图的触摸,如果您希望按钮立即响应,则将此属性设置为false

答案 2 :(得分:0)

将所有子视图从ContentView拖到ScrollView。并隐藏ContentView。确保ContentView(scrollView的ContainerView)也应该是scrollView的子视图。

例如:
UIScrollView中
--PhoneNumberView
---的UIButton
-ContentView(此视图应隐藏)