實現方法一:重寫UIButton, 設置一個代理CustomButtonDelegate
@optional
-(void)buttonTouchedDown:(UIButton*)button;
-(void)buttonTouchedUpOutside:(UIButton*)button;
-(void)buttonTouhedCancelled:(UIButton*)button;
-(void)buttonTouchedLongTime:(UIButton*)button;
@end
-(id)init{
If(self = [super init]){
self.showsTouchWhenHighlighted = YES;
[self addTarget:self action:@selector(buttonTouchedDown:) forControlEvents:UIControlEventTouchDown];
[self addTarget:self action:@selector(buttonTouchedUpOutside:) forControlEvents: UIControlEventTouchUpOutside];
[self addTarget:self action:@selector(buttonTouhedCancelled:) forControlEvents:UIControlEventTouchCancell];
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(buttonTouchedLongTime:)];
longPress.minimumPressDuration = 0.8; //定義按的時間
[self addGestureRecognizer:longPress];
}
return self;
}
-(void)buttonTouchedDown:(UIButton *)button
{
If([self.delegaterespondsToSelector:@selector(buttonTouchedDown:)]){
[self.delegate buttonTouchedDown:self];
}
}
依次類推…
實現方法二:
1. UIButton *aBtn=[UIButton buttonWithType:UIButtonTypeCustom];
2. [aBtn setFrame:CGRectMake(40, 100, 60, 60)];
3. [aBtn setBackgroundImage:[UIImage imageNamed:@"111.png"] forState:UIControlStateNormal];
4. //button點擊事件
5. [aBtn addTarget:self action:@selector(btnShort:) forControlEvents:UIControlEventTouchUpInside];
6. //button長按事件
7. UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(btnLong:)];
8. longPress.minimumPressDuration = 0.8; //定義按的時間
9. [aBtn addGestureRecognizer:longPress];
10.
11.
12.
13.-(void)btnLong:(UILongPressGestureRecognizer *)gestureRecognizer{
14. if ([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
15. NSLog(@"長按事件");
16. UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"消息" message:@"確定刪除該模式嗎?" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"刪除", nil];
17. [alert show];
18. }
19.}
這種方法是設置在固定時間內觸發的事件。
實現方法三:
[communicaBut addTarget:self action:@selector(offsetButtonTouchBegin:)forControlEvents:UIControlEventTouchDown];
[communicaBut addTarget:self action:@selector(offsetButtonTouchEnd:)forControlEvents:UIControlEventTouchUpInside];
[communicaBut addTarget:self action:@selector(offsetButtonTouchEnd:)forControlEvents:UIControlEventTouchUpOutside];
-(void) offsetButtonTouchBegin:(id)sender{
NSLog(@"開始計時");
count = 0;
timer = [NSTimer scheduledTimerWithTimeInterval:0.1
target: self
selector: @selector(handleTimer:)
userInfo: nil
repeats: YES];
[timer fire];
}
-(void) offsetButtonTouchEnd:(id)sender{
NSLog(@"計時結束");
[timer invalidate];
NSLog(@"count = %f",count);
}
-(void) handleTimer:(id)sender{
count = count + 0.1;
NSLog(@"%f",count);
}
這種方法是從觸發按鈕到離開按鈕的時間內(不固定)觸發的事件