【问题标题】:Custom UI Button touch event Background Color自定义 UI 按钮触摸事件背景颜色
【发布时间】:2013-05-31 09:11:42
【问题描述】:

我有一个触摸事件不太适合的自定义 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 之前,背景颜色不会改变。或者,如果我按住一个按钮,它不会按应有的方式立即改变颜色。

我需要的是它在按住或按下时立即改变颜色,并在按钮不再被按住时改变颜色。有什么想法吗? p>

【问题讨论】:

  • 提示:大多数人会观看 iOS 和 Objective-c 标签。因此,请务必用他们标记您的问题。
  • @MohannadA.Hassan 感谢您的提示,这样我就可以得到更多需要关注的目光,关注它!欣赏!

标签: uibutton


【解决方案1】:

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

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

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

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

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

但是你可能还想考虑当用户向下进入、向内向下、向外向下时背景颜色会发生什么变化/em>,在外面修饰,等等。

【讨论】:

  • 非常有意义!非常感谢您的帮助!
  • 快速提问,当触摸事件发生时,我将使用什么样的代码将按钮颜色更改为greenColor?因为对于按钮,我将背景颜色设置为blackColor。所以我的问题是,我将使用什么来将UIControlEventTouchDown 的背景颜色设置为greenColor?
  • @Reez 我认为要更改背景颜色,您需要将 UIButton 子类化。或者只是利用背景图像并针对不同的状态进行不同的设置。 stackoverflow.com/questions/4049103/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多