在我的应用程序中,我有一个按钮,当按下它时,比如说"触摸内部",就会打开另一个视图。我的问题是,我该如何做两个动作?我的意思是,当我按下按钮时,我想做一些事情(比如隐藏按钮或更改按钮的图像),当我停止按下时,我希望导航到另一个视图。
这样做:
[yourbutton addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside];
[yourbutton addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown];
现在选择器是:
-(IBAction)touchUp :(id)sender{
UIButton *btn = (UIButton *)sender;
[btn setImage:yourImage forState:UIControlStateHighlighted];
}
-(IBAction)touchDown :(id)sender{
//Navigate here
}
如果你想在"按下"时"做点什么",那么只需挂上"触摸"
作为按钮委托的类需要跟踪状态,并通过可能发生的事件(状态机)管理该状态。使用实例变量来跟踪状态。
当您处理按钮操作时,代码应该确定它处于什么状态,并进行任何必要的更改以转移到下一个状态。
您可以对不同的ControlEvents 使用不同的操作
[button addTarget:self action:@selector(action1) forControlEvents:UIControlEventTouchDown] ;
[button addTarget:self action:@selector(action2) forControlEvents:UIControlEventTouchUpInside] ;
只需将代码添加到IBActions即可。然后通过界面构建器对不同的触摸事件进行类似的操作。
代码:
[yourUIButton addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventXXXXX];
有很多事件可以将UIButton链接到:
UIControlEventTouchDown
UIControlEventTouchDownRepeat
UIControlEventTouchDragInside
UIControlEventTouchDragOutside
UIControlEventTouchDragEnter
UIControlEventTouchDragExit
UIControlEventTouchUpInside
UIControlEventTouchUpOutside
UIControlEventTouchCancel
参考:UIControl苹果参考