iphone开发:一键两动



在我的应用程序中,我有一个按钮,当按下它时,比如说"触摸内部",就会打开另一个视图。我的问题是,我该如何做两个动作?我的意思是,当我按下按钮时,我想做一些事情(比如隐藏按钮或更改按钮的图像),当我停止按下时,我希望导航到另一个视图。

这样做:

[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苹果参考

最新更新