手指触摸事件小球跟随手指

Posted pengyuan_D

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手指触摸事件小球跟随手指相关的知识,希望对你有一定的参考价值。

(1)设置根视图控制器

(2)将TouchView添加到RootViewController

(3)TouchView.h将_view设为全局变量

TouchView.m

#import "TouchView.h"

@implementation TouchView

- (id)initWithFrame:(CGRect)frame

    self = [super initWithFrame:frame];
    if (self) 
        
//        开启多点触摸
        self.multipleTouchEnabled = YES;
        
        //开启相应时间,默认是yes,除了imageView
        self.userInteractionEnabled = YES;
        
        _view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 15, 15)];
        _view.backgroundColor = [UIColor redColor];
        [self addSubview:_view];
        
    
    return self;


//开始触摸,手指触摸到屏幕的时候调用的方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

    //点击的手指的个数
    NSInteger touchCount = touches.count;
//    NSLog(@"touchCount:%d",touchCount);
    
    //取出点击的touch
    UITouch *touch = [touches anyObject];
    //取得他的点击次数
    NSInteger count = [touch tapCount];//touch.tapCount
//    NSLog(@"count:%d",count);
    
    if (count == 1) 
        //单击的时候调用的方法
//        [self signalTap];
        //延迟调用单击的方法
        [self performSelector:@selector(signalTap) withObject:nil afterDelay:.5];
    else if (count == 2) 
        //双击的时候调用的方法
//        [self doubleTap];
        //取消单击的方法
        [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(signalTap) object:nil];
        [self doubleTap];
    
    
    //获取点击的所在window
//    UIWindow *window = touch.window;
//    NSLog(@"window:%@",window);
    //获取点击所在的视图
//    UIView *view = touch.view;
//    NSLog(@"view:%@",view);
  
    //取得点击的坐标
    CGPoint point = [touch locationInView:self];
//    _view.frame.origin = point;   不可以
    CGRect frame = _view.frame;
    frame.origin = point;
    _view.frame = frame;
    


//单击响应的事件
- (void)signalTap 

    NSLog(@"单击");
    


- (void)doubleTap 
 
    NSLog(@"双击");


//手指在屏幕上移动的时候调用的方法,如果手指在屏幕上移动的时候,这个方法会不停的调用
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

    
    UITouch *touch = [touches anyObject];
    //取得点击的坐标
    CGPoint point = [touch locationInView:self];
    //取得前一次的坐标
//    [touch previousLocationInView:<#(UIView *)#>]
    
    CGRect frame = _view.frame;
    frame.origin = point;
    _view.frame = frame;
    


触摸结束的时候调用的方法
//- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
//    NSLog(@"touchesEnded");
//
//
触摸取消的时候调用的方法
//- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 
//
//
//    NSLog(@"touchesCancelled");
//
//

//手机开始摇动的时候调用的方法
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event 




//- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
//- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event

@end

以上是关于手指触摸事件小球跟随手指的主要内容,如果未能解决你的问题,请参考以下文章

实例:动态生成View控件例子---小球跟随手指滑动

用户如何在触摸时也能画出线条跟随手指?Android 开发

触摸事件

仅当触摸类型为手指时,如何将触摸事件传递给其他视图?

html5 touch 触摸事件如何监听一个手指多次来回摩擦触发事件?

如何通过触摸在屏幕上拖动手指来移动 3D 对象