ios - 在 UIScrollView 中,UIButton 触摸延迟

标签 ios uiscrollview uibutton touchescancelled

我的应用程序遇到了一个小问题。

我基本上有一系列 UIButtonsUIScrollView 中添加为 subview 这是 Nib 的一部分。每次我点击一个按钮时,在突出显示按钮之前都会有明显的延迟。在按钮变暗并显示为选中之前,我必须按住它大约半秒钟。

我假设这是因为 UIScrollView需要确定触摸是滚动还是针对 subview 的触摸。

无论如何,我有点不确定如何进行。我只是希望按钮在我点击它时立即显示为已选中。

感谢任何帮助!

编辑:

我试过设置 delaysContentTouches NO 但滚动变得几乎不可能,因为我的大部分 scrollView 都充满了 UIButtons .

最佳答案

Jeff 的解决方案对我来说不太管用,但这个类似的解决方案确实适用:http://charlesharley.com/2013/programming/uibutton-in-uitableviewcell-has-no-highlight-state

除了覆盖 ScrollView 子类中的touchesShouldCancelInContentView 之外,您还需要将delaysContentTouches 设置为false。最后,您需要为按钮返回 true 而不是 false。这是来自上述链接的修改示例。正如评论者所建议的那样,它专门检查 UIControl 的任何子类而不是 UIButton,以便此行为适用于任何类型的控件。

objective-C :

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        self.delaysContentTouches = false;
    }

    return self;
}

- (BOOL)touchesShouldCancelInContentView:(UIView *)view {
    if ([view isKindOfClass:UIControl.class]) {
        return true;
    }

    return [super touchesShouldCancelInContentView:view];
}

swift 4:

override func touchesShouldCancel(in view: UIView) -> Bool {
    if view is UIControl {
        return true
    }
    return super.touchesShouldCancel(in: view)
}

关于ios - 在 UIScrollView 中,UIButton 触摸延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642547/

相关文章:

ios - UIscrollView动画不流畅

swift - uinavigationcontroller 的异常行为点击 UIButton 抛出异常

ios - 更新我的应用程序的旧版本

ios - 我们的 iPad 应用企业版无法下载

javascript - 有路况的行车路线

ios - 放入 ScrollView 时出现表格 View 框架问题

iphone - 捕获卡在 DrawRect 方法中的 UIView 的 UIImage

iphone - UIScrollView ImageView 顶部有针脚

ios - 按钮高度无法调整

ios - 触摸一次后如何使 UIButton 不可点击并隐藏和取消隐藏按钮? - swift