实现方法一:重写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);
}
这种方法是从触发按钮到离开按钮的时间内(不固定)触发的事件