2

我注意到如果我做这样的事情

[self setTitle:@"Follow" forState:UIControlStateNormal];
[self setTitle:@"Following" forState:UIControlStateSelected];

该按钮将以“关注”开始。我按下它,当我松开手指(触摸事件)时,它变为“Following”。那太棒了。但是,当它现在被选中并按下它时,它会在我松开手指之前立即变为“跟随”(在触摸事件中)。我想在松开手指时进行更改(修饰事件)。我该怎么做呢?我将 UIControlStates 用于 UIButton 的标题、图像和标题颜色。

下面是我的事件处理程序:

- (void)followButtonAction:(UIButton *)button
{
    button.selected = !button.selected;
}

我将其设置为:

[self.followButton addTarget:self action:@selector(followButtonAction:) forControlEvents:UIControlEventTouchUpInside];
4

2 回答 2

0

事实证明,解决方案是专门为导致问题的组合添加另一个控制状态(选择时,然后被按下)。以下是解决方案:

[self setTitle:@"Follow" forState:UIControlStateNormal];
[self setTitle:@"Following" forState:UIControlStateSelected];
[self setTitle:@"Following" forState:UIControlStateSelected | UIControlStateHighlighted];
于 2015-05-02T03:08:19.043 回答
0

尝试使用它,这对我来说是切换按钮。

-(IBAction)buttonTapped:(UIButton *)sender{
    if ([sender isSelected]) {
        [sender setSelected:NO];
    }else{
        [sender setSelected:YES];
    }
}

希望这对你也有效。

于 2015-05-02T02:52:40.987 回答