当前位置:编程学习 > wap >>

[IOS]自定义长触屏事件

写一个Demo来自定义一个长触屏事件,自定义长按手势。
实现步骤:
1.创建一个自定义手势类,命名为LongPressGestureRecognizer,在创建的时候继承UIGestureRecognizer
LongPressGestuRecognizer.h:
 
#import <UIKit/UIKit.h>  
  
@interface LongPressGestureRecognizer : UIGestureRecognizer  
  
@end  

 

 
LongPressGestuRecognizer.m:
 
 
#import "LongPressGestureRecognizer.h"  
#import <UIKit/UIGestureRecognizerSubclass.h>  
#import <time.h>  
  
NSInteger timer1;  
NSInteger timer2;  
@implementation LongPressGestureRecognizer  
  
  
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  
{  
    [super touchesBegan:touches withEvent:event];  
    NSDate *nowDate = [NSDate date];  
    NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];  
    [dateformatter setDateFormat:@"ss"];  
      
    timer1 = [[dateformatter stringFromDate:nowDate] integerValue];  
    [dateformatter release];  
    NSLog(@"%d",timer1);  
}  
  
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event  
{  
    [super touchesEnded:touches withEvent:event];  
    NSDate *nowDate = [NSDate date];  
    NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];  
    [dateformatter setDateFormat:@"ss"];  
      
    [dateformatter release];  
    NSLog(@"%d",timer1);  
      
    if ((timer2 -timer1) >= 2)  
    {  
         self.state = UIGestureRecognizerStateEnded;  
    }  
      
}  
  

 

@end  
 
2.修改主ViewController
ViewController.h:
 
#import <UIKit/UIKit.h>  
  
@interface DXWViewController : UIViewController<UIGestureRecognizerDelegate>  
  
@end  

ViewController.m:
[plain] view plaincopyprint?
#import "DXWViewController.h"  
  
#import "LongPressGestureRecognizer.h"  
  
@interface DXWViewController ()  
  
@end  
  
@implementation DXWViewController  
  
- (void)viewDidLoad  
{  
    [super viewDidLoad];  
      
      
    LongPressGestureRecognizer * longPress = [[LongPressGestureRecognizer alloc] initWithTarget:self action:@selector(LongPress:)];  
    [self.view addGestureRecognizer:longPress];  
}  
  
-(void)LongPress:(LongPressGestureRecognizer *)my  
{  
    NSLog(@"OK");  
}  

 

 
  
@end  
 
3.ViewController中的触屏事件touchesBegan和自定义手势中的touchesBegan区别:                                              
ViewController中的touchesBegan是针对整个View而言的,而自定义中的手势是要绑定到某个特定的view,只针对这个view才相应的手势事件
 
补充:移动开发 , IOS ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,