2013-05-30 27 views
1

我有一个自定义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]]; 
} 

当我按下按钮,背景颜色没有得到改变,直到视图控制器已经发射到下一个视图控制器。或者如果我按住一个按钮,它应该不会立即改变颜色。

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

+0

只是一个提示:大多数人会看iOS和objective-c标签。所以一定要跟他们标记你的问题。 –

+0

@ MohannadA.Hassan谢谢你的提示,所以我可以得到更多的眼睛需要在它上面!欣赏它! – Realinstomp

回答

3

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

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

Touch up inside

正如你所看到的,有可以连接到按钮许多其他事件。其中之一是触摸下来当您想在按住按钮的时刻更改按钮的背景颜色时,您可能会感兴趣。

只需将IBAction方法链接到触击式事件事件即可。或者你也可以使用代码:

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

但你也可能要考虑应该发生什么样的背景颜色,当用户触地降落进入触摸里面下来,触摸外面下来touch up

+0

完美感!非常感谢你的帮助!! – Realinstomp

+0

快速问题,当触碰事件发生时,只需将按钮颜色更改为'greenColor',我将使用什么样的代码?因为对于按钮,我将背景色设置为“blackColor”。所以我的问题是,我会用什么来将'UIControlEventTouchDown'的背景颜色设置为'greenColor'? – Realinstomp

+0

@Reez我认为改变背景颜色,你需要继承UIButton。或者只是使用背景图像,并针对不同的状态进行不同的设置。 http://stackoverflow.com/questions/4049103/iphone-how-to-set-backgroundcolor-of-uibutton-with-buttontype-uibuttontypecust –