gpt4 book ai didi

ios - UITableViewCell setHighlighted 内的 UIButton 未在表格滚动上更新

转载 作者:行者123 更新时间:2023-11-29 03:16:59 25 4
gpt4 key购买 nike

我在 UITableViewCell 的 contentView 中放置了一个 UIButton 的子类。我遇到的问题是,当我按下按钮并(快速)滚动表格时,按钮的 setHighlighted: 方法被调用了三次,所有这些都以 YES 作为参数。当表格滚动时,该按钮永远不会取消突出显示(因此当我完成滚动时,我的一个按钮看起来像是被按下了,但屏幕上不再有任何手指)。如果我按下按钮,稍等片刻,然后滚动,表格不会滚动并且按钮会正确取消突出显示(当触摸事件退出按钮的框架时)。

我试过将 tableView 设置为

self.tableView.canCancelContentTouches = NO;
self.tableView.delaysContentTouches = NO;

但这并没有帮助(并且设置 delaysContentTouches = NO 实际上使表格不可滚动)。我没有尝试在新的 UITableViewCellScrollView 中设置这些,因为那是私有(private)的,我不想为 if IOS7, else...

添加新代码

setHighlighted: 调用来自 UIControl touchesBegan:UIControl touchesMovedUIControl touchesEnded:。我从来没有从 UIControl touchesCancelled: 得到任何东西,这是我在 tableView 接管触摸事件滚动控制时所期望的。

如果有人认为我做错了什么,我可以添加代码,但这对我来说更像是一个概念问题。

为什么我没有从 UIControl touchesCancelled: 得到 setHighlighted:NO

我还没有尝试使用非子类化的 UIButton 和 setImage:forState:,因为我突出显示的状态只是渐变变化,我不想为它们创建 UIImage。但如果必须的话,我可以。

最佳答案

这可能不是处理此问题的正确方法,但由于没有其他人提供任何其他解决方案,我只是找到了解决我遇到的问题的方法。由于默认的 touchesCancelled 显然不会向我的按钮子类发送 setHighlight:NO 消息,我在我的 UIButton 子类中重载了 touchesCancelled 函数并且称为 [self setHighlighted:NO]。这似乎解决了表格滚动时按钮保持突出显示的问题。

以防万一其他人将来遇到这个问题。

关于ios - UITableViewCell setHighlighted 内的 UIButton 未在表格滚动上更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21582438/

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