自定义UI按钮触摸事件背景颜色

时间:2013-05-30 20:44:30

标签: uibutton

我有一个自定义UIButton,触摸事件不太合适。当按钮被内部触摸时,我需要立即更改背景颜色。

ViewController.m

- (IBAction)buttonOneWithTeam:(id)sender {
    if
    ([tNLabel.text isEqualToString:@"Hi"]){
        [self performSegueWithIdentifier:@"button" sender:sender];
    }
    else {
        [self performSegueWithIdentifier:@"web" sender:sender];
    }
    [buttonOne addTarget:self action:@selector(buttonOnePressed:) forControlEvents:UIControlEventTouchDown];
}

- (IBAction)buttonOnePressed:(id)sender {
    [buttonOne setBackgroundColor:[UIColor greenColor]];
}

当我按下按钮时,在ViewController已经触发到下一个ViewController之前,背景颜色不会改变。或者,如果我按住一个按钮,它就不会立即改变颜色。

我需要的是它在按下或按下时立即改变颜色,并且一旦按钮不再被按下,也会改变颜色。任何想法?

1 个答案:

答案 0 :(得分:3)

将Storyboard或IB中的按钮连接到IBAction方法时触发的默认事件是中触摸,这意味着当您点击按钮并抬起手指时将调用该方法虽然它在按钮的区域(及其周围的一部分)内。

您可以查看“工具”部分中的最后一个选项卡,了解该按钮的连接。

Touch up inside

如您所见,还有许多其他事件可以连接到按钮。其中一个是触摸,当您想要在按住按钮时更改按钮的背景颜色时,您可能会感兴趣。

只需将IBAction方法链接到 touch down 事件即可。或者你可以使用代码:

[button addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown];

但是,您可能还想考虑当用户触摸输入时,背景颜色会发生什么,触摸内部触摸外部< / em>,在外面触摸