【发布时间】:2013-02-02 03:22:09
【问题描述】:
我正在关注this answer 来更改我的 UIButton 的标题。总而言之,这是我必须做的:
当用户按下时,按钮的标题开始改变。
按住触摸时,它应该每 1 秒改变一次,并且用户 应该可以看到的。
当用户触摸(停止触摸)时,按钮标题应固定为最后保持的值。
我使用setTitle:forState:处理1
我使用setTitle:forState: 处理 2。只要计时器在用户触摸后每 1 秒触发一次,这种情况就会一直发生。
我使用titleForState 处理 3。但是在这里我没有得到 2 中设置的值。 有时当我得到正确的值时,仍然存在一个问题:触摸结束后,我仍然在 UI 中看到那个自定义 UIButton 上的旧标题,而不是我使用 titleForState 读取的那个。 (就此而言,即使 UIButton.textLabel.text 给出了错误的值)
1 - 我是否遵循了正确的触摸和按住方法? (我的意思是使用描述的计时器方法来设置和读取 UIButton 标题)
2 - 如果是,我应该在代码中进行哪些更改才能读取正确的 UIButton 标题值?
编辑:
我摆脱了上面 3 中遇到的问题。问题的原因是:我在阅读和写作时没有提供相同的UIControlState 组合。我假设如果您提供UIControlStateNormal | UIControlStateHighlighted 用于编写标题,然后使用UIControlStateNormal 将其读回,它应该返回当前的标题值,反之亦然。不幸的是,事实并非如此。我更改了我的应用程序逻辑,以便我每次都只需要使用其中一种状态。
但是主要问题仍然存在(上面的 2) - 如何在 UIButton 仍处于突出显示状态时显示标题。按住触摸时标题完全不可见。
【问题讨论】:
-
也许尝试用
setTitleColor:forState:改变颜色标题? -
试过但没有成功。尝试设置红色以便它仍然可见,但没有看到 UI 的变化。