1

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

视图控制器.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 之前,背景颜色不会改变。或者,如果我按住一个按钮,它不会按应有的方式立即改变颜色。

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

4

1 回答 1

3

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

您可以查看实用程序部分的最后一个选项卡以了解按钮的连接。

修饰内部

如您所见,还有许多其他事件可以连接到按钮。其中之一是touch down,当您想在按住按钮的那一刻更改按钮的背景颜色时,您可能会对它感兴趣。

只需将 IBAction 方法链接到着陆事件。或者您可以使用以下代码:

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

但是您可能还想考虑当用户按下输入按下内部按下外部按下外部等时背景颜色会发生什么变化。

于 2013-05-31T01:11:42.023 回答