gpt4 book ai didi

ios - 滚动 UICollectionView 时忽略嵌入式 UIButton 的触摸事件

转载 作者:行者123 更新时间:2023-12-01 19:02:01 30 4
gpt4 key购买 nike

我有一个自定义 UICollectionViewCell ,其中有一些自定义 UIView 对象。这些 UIView 中的每一个都有一个 UIButton,它响应 IBAction 链接的 Touch Down 和 Touch Up Inside。基本上,我希望这些按钮在按下时缩小并在松开时弹回原来的大小。我可以通过控件轻松完成此操作,并且按下和按下即可。但是,我面临的问题是在将滚动引入混合时发生的。这些单元格所在的 UICollectionView 是滚动的。如果我在开始滚动时碰巧触摸了一个按钮,则会触发 Touch Down 事件以及 UICollectionView 的滚动事件。如果我没记错的话,iOS7 之前的情况并非如此。当滚动事件开始时,UIButton 事件没有被触发,我认为它与 delaysContentTouches 有关。这看起来现在被打破或改变了。它实际上仍然可以在 iPhone 上正常运行,只是在 iPad 上不行。如果我在 iPad 上 ScrollView ,并从嵌入式 UIButton 内部开始触摸,则按钮将缩小并且按钮操作将被触发。

因此,尽可能简单地重申这个问题:当滚动发生时,是否有忽略嵌入式 UIButtons 的触摸?当没有触发滚动时,触摸工作正常,如果用户确实在滚动,我只是不希望事件触发。有什么解决方法吗?

如果您需要任何更具体的细节,我很乐意帮助您理解。

最佳答案

你需要继承scrollView(collectionView或tableView)并覆盖

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

}

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

现在就是这样,您可以滚动按钮而不丢失按钮点击事件。

关于ios - 滚动 UICollectionView 时忽略嵌入式 UIButton 的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22159380/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com