【问题标题】:UIButton Doesn't allow UIScrollView to scrollUIButton 不允许 UIScrollView 滚动
【发布时间】:2011-07-01 12:08:16
【问题描述】:

UIScrollView 中有很多 UIButtons。那些UIButtonsTouch Down Repeat 中附加了操作。我的问题是当我触摸按钮然后滚动时我的滚动视图不滚动,但如果我触摸按钮外部它工作正常。

即使按下按钮,我怎样才能让我的滚动视图滚动?

【问题讨论】:

    标签: iphone ios uiscrollview uibutton


    【解决方案1】:

    只要您在 Interface Builder 中设置了 Cancellable Content Touches,它就应该可以工作。也可以在代码中设置:

    scrollView.canCancelContentTouches = YES;
    

    【讨论】:

    • 哇,一个简单的复选框解决了我的问题。谢谢!
    • 没问题。另请查看Delay Content Touches 属性和文档,它们可能也与您正在做的事情有关。
    • 请注意,您还需要继承 UIScrollView 才能真正使其工作。详情见stackoverflow.com/a/3550157/908621
    • 以上带有链接的评论对于正确处理这种情况至关重要。
    • 如果在UITableView的cell上加了ScrollView怎么办?它会在那种情况下工作吗?我不这么认为
    【解决方案2】:

    所以如果您没有将delaysContentTouches 设置为YESview.canCancelContentTouches = YES 工作正常。但是,如果您这样做,按钮将根本不起作用。您需要做的是继承UIScrollView(或UICollectionView/UITableView)并实现以下内容:

    Objective-C

    - (BOOL)touchesShouldCancelInContentView:(UIView *)view {
        if ([view isKindOfClass:UIButton.class]) {
            return YES;
        }
        return [super touchesShouldCancelInContentView:view];
    }
    

    斯威夫特 2

    override func touchesShouldCancelInContentView(view: UIView) -> Bool {
        if view is UIButton {
            return true
        }
        return super.touchesShouldCancelInContentView(view)
    }
    

    【讨论】:

      【解决方案3】:

      使用UITapGestureRecognizerdelaysTouchesBegan 作为属性设置为true

      【讨论】:

        猜你喜欢
        • 2012-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-05
        相关资源
        最近更新 更多