如何在触摸和保持期间动态更改UIButton标题

时间:2013-02-17 17:11:27

标签: iphone ios uibutton

我正在关注this answer以更改我的UIButton的标题。总而言之,这就是我必须做的事情:

  1. 当用户触摸时,按钮标题开始变化。

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

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

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