9.2 触摸和手势:单击双击、移动视图

来源:互联网 发布:2016网络流行词经典版 编辑:程序博客网 时间:2024/05/21 01:28


======模拟单击双击==========

#import "TouchView.h"@implementation TouchView- (id)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {                // 开启触摸响应,默认是yes        self.userInteractionEnabled = YES;                // 开启多点触摸,默认NO;        self.multipleTouchEnabled = YES;            }    return self;}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{//    NSLog(@"touchesBegan");        //--------------------模拟单击、双击----------------------    UITouch *touch = [touches anyObject];    NSUInteger tapCount = touch.tapCount;//    NSLog(@"tapCount----%d", tapCount);        //延迟调用单击事件;这样就能区别单击和双击事件;    //取消某个延迟调用方法;    //延迟调用方法怎么取消的:延迟调用被加到runloop中,当我们调用取消方法时,runloop就会取消调用延迟加载;    if (tapCount == 1)    {        [self performSelector:@selector(singleTap) withObject:nil afterDelay:0.5];            }    else if (tapCount == 2)    {        [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(singleTap) object:nil];                [self doubleTap];    }        CGPoint point = [touch locationInView:self];    NSLog(@"%@", NSStringFromCGPoint(point));}/*- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{    NSLog(@"touchesMoved");}- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{     NSLog(@"touchesEnded");}*/- (void)singleTap{    NSLog(@"单击");}- (void)doubleTap{    NSLog(@"双击");}@end

======模拟移动==========

#import "TouchView.h"@interface TouchView (){    UIView *movieView;    }@end@implementation TouchView- (id)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {                // 开启触摸响应,默认是yes        self.userInteractionEnabled = YES;                // 开启多点触摸,默认NO;        self.multipleTouchEnabled = YES;                movieView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];        movieView.backgroundColor = [UIColor redColor];        [self addSubview:movieView];            }    return self;}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{//    NSLog(@"touchesBegan");        //--------------------模拟单击、双击----------------------    UITouch *touch = [touches anyObject];    NSUInteger tapCount = touch.tapCount;//    NSLog(@"tapCount----%d", tapCount);        //延迟调用单击事件;这样就能区别单击和双击事件;    //取消某个延迟调用方法;    //延迟调用方法怎么取消的:延迟调用被加到runloop中,当我们调用取消方法时,runloop就会取消调用延迟加载;    if (tapCount == 1)    {        [self performSelector:@selector(singleTap) withObject:nil afterDelay:0.5];            }    else if (tapCount == 2)    {        [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(singleTap) object:nil];                [self doubleTap];    }        CGPoint point = [touch locationInView:self];    NSLog(@"%@", NSStringFromCGPoint(point));}// UIView鼠标跟随- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{//    NSLog(@"touchesMoved");        UITouch *touch = [touches anyObject];    CGPoint point = [touch locationInView:self];        CGRect frame = movieView.frame;    frame.origin = point;    movieView.frame = frame;    }/*- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{     NSLog(@"touchesEnded");}*/- (void)singleTap{    NSLog(@"单击");}- (void)doubleTap{    NSLog(@"双击");}@end





0 0
原创粉丝点击