点按时按钮文本会恢复

时间:2014-02-04 20:35:44

标签: ios objective-c

我有一个按钮,在整个程序中他更改了他的名字 原名是“行”。
然后重命名为“bar”。

当命名为“bar”时,我按下它会执行以下代码 在代码中是变量_bt3。

[UIView animateWithDuration:1
                          delay:0
                        options:UIViewAnimationCurveEaseOut
                     animations:^{
                         _bt1.transform = CGAffineTransformMakeTranslation(0,0);
                         _viewBt1.transform = CGAffineTransformMakeTranslation(0,0);
                         _bt2.transform = CGAffineTransformMakeTranslation(0,0);
                         _viewBt2.transform = CGAffineTransformMakeTranslation(0,0);
                         _bt3.transform = CGAffineTransformMakeTranslation(0,-_viewBt3.frame.size.height+68);
                         _viewBt3.transform = CGAffineTransformMakeTranslation(0,-_viewBt3.frame.size.height+68);
                         _bt4.transform = CGAffineTransformMakeTranslation(0,0);
                         _viewBt4.transform = CGAffineTransformMakeTranslation(0,0);

                     }
                     completion:^(BOOL finished) {
                     }];

之后用你的名字神奇地出现。

我只需更改_bt2时按下此按钮的名称。 我不再使用代码的一部分,因为名字来自故事板

按下_bt2时,运行以下代码

- (IBAction)bt2Pressed:(id)sender {
    NSLog(@"botao2");
    _bt3.titleLabel.text=@"Bar";
}
谁知道怎么解决?

1 个答案:

答案 0 :(得分:2)

问题是您是直接设置_bt3.titleLabel.text。不要那样做。

按钮具有以下状态:正常,突出显示,已选中和已禁用。它知道每个州的文本应该是什么。当_bt3更改状态时,会设置_bt3.titleLabel.text。这会将您的更改覆盖为_bt3.titleLabel.text

如果未将文本设置为非正常状态,则该按钮将使用正常状态的文本。

当用户触摸_bt3时,_bt3会将其状态更改为突出显示,并将_bt3.titleLabel.text设置为其突出显示状态的文本集。当用户停止触摸_bt3时,_bt3会将其状态恢复正常,并将_bt3.titleLabel.text设置为正常状态的文本集。

所以不要直接设置_bt3.titleLabel.text,而是需要告诉按钮它应该在正常状态下显示哪个文本:

[_bt3 setTitle:@"Bar" forState:UIControlStateNormal];