3

我正在按照这个答案更改我的 UIButton 的标题。总而言之,这是我必须做的:

  1. 当用户按下时,按钮的标题开始改变。

  2. 按住触摸时,它应该每 1 秒更改一次,并且用户应该能够看到它。

  3. 当用户触摸(停止触摸)时,按钮标题应固定为最后保持的值。

我使用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 仍处于突出显示状态时显示标题。触摸时标题完全不可见。

4

1 回答 1

1

如何在 UIButton 仍处于突出显示状态时显示标题。触摸时标题完全不可见。

您的按钮是否配置为在触摸事件期间标题消失,而您的代码不会更改标题文本?那就是没有代码更改标题它仍然消失吗?

我认为您的按钮需要重新绘制,[button setNeedsDisplay]更改标题文本后尝试调用。

于 2013-02-17T22:40:32.697 回答