ios之手势
做测试之用
- (void)viewDidLoad { [super viewDidLoad]; UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 280, 480) ]; view.backgroundColor = [UIColor grayColor]; [self.view addSubview:view]; [view release]; UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"a.jpg"]]; imageView.frame = CGRectMake(0, 0, 320, 480); imageView.userInteractionEnabled = YES; [self.view addSubview:imageView]; [imageView release]; // 手势 // UITapGestureRecognizer 轻拍手势识别器 能识别轻拍操作 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]; [imageView addGestureRecognizer:tap]; // 给视图添加手势 [tap release]; // 两根手指点两下 tap.numberOfTapsRequired = 2; //必须点击的次数 默认为1 tap.numberOfTouchesRequired = 2; //手指的数量 // UILongPressGestureRecognizer 长按手势 能识别长按操作 UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)]; [imageView addGestureRecognizer:longPress]; [longPress release]; [longPress setMinimumPressDuration:2]; //设置长按时间2S 默认0.5S // UIRotationGestureRecognizer 旋转手势 能识别旋转 UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotation:)]; [imageView addGestureRecognizer:rotation]; [rotation release]; // UIPinchGestureRecognizer 捏合手势 识别捏合 UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)]; [imageView addGestureRecognizer:pinch]; [pinch release]; // UIPanGestureRecognizer 拖放手势 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; [imageView addGestureRecognizer:pan]; [pan release]; // UISwipeGestureRecognizer 轻扫手势 UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)]; [imageView addGestureRecognizer:swipe]; swipe.direction = UISwipeGestureRecognizerDirectionRight; // 轻扫手势需要指定方向 默认right 指定多个方向会降低识别率 [swipe release]; // UIScreenEdgePanGestureRecognizer 屏幕边缘轻扫识别器 iOS7中新增的手势 (这个尚在摸索中) UIScreenEdgePanGestureRecognizer *screenEdgePanGesture = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(screen:)]; // 边缘滑动,必须设置方向edges属性 [screenEdgePanGesture setEdges:UIRectEdgeLeft]; [imageView addGestureRecognizer:screenEdgePanGesture]; // Do any additional setup after loading the view. }
实现手势的方法
// 点按 - (void)tap:(UITapGestureRecognizer *)tap { // 在开发过程中 如果没有必要,不要对一个控件即使用触摸 有使用手势 NSLog(@"点我啦%@", tap); } - (void)longPress:(UILongPressGestureRecognizer *)longPress { NSLog(@"long:%@", longPress); } // 旋转 - (void)rotation:(UIRotationGestureRecognizer *)rotation { rotation.view.transform = CGAffineTransformRotate(rotation.view.transform, rotation.rotation); // NSLog(@"%f", rotation.rotation); NSLog(@"%f", rotation.velocity); // 旋转的速度 NSLog(@"rotation:%@", rotation); rotation.rotation = 0; // 旋转角度 } // 捏合 - (void)pinch:(UIPinchGestureRecognizer *)pinch { NSLog(@"scale:%f", pinch.scale); NSLog(@"velocity:%f" ,pinch.velocity); // 速度 NSLog(@"pinch:%@", pinch); pinch.view.transform = CGAffineTransformScale(pinch.view.transform, pinch.scale, pinch.scale); pinch.scale = 1; // 比例复位 } // 拖放手势 - (void)pan:(UIPanGestureRecognizer *)pan { // 在拖放手势中是需要考虑手指的状态的UIGestureRecognizerState // 在拖放手势中使用的状态是UIGestureRecognizerStateChanged // 使用拖放手势的时候 当手指离开的时候,应该做一个很小的动作,提醒用户拖放完成 // if (pan.state == UIGestureRecognizerStateChanged) { // [pan.view setCenter:[pan locationInView:self.view]]; // } NSLog(@"pan:%@", pan); CGPoint point = [pan translationInView:pan.view]; pan.view.transform = CGAffineTransformTranslate(pan.view.transform, point.x, point.y); [pan setTranslation:CGPointZero inView:pan.view]; } // 轻扫手势 - (void)swipe:(UISwipeGestureRecognizer *)swipe { NSLog(@"swipe:%@", swipe); } // 屏幕边缘轻扫手势 (一定要从屏幕的边缘开始) - (void)screen:(UIScreenEdgePanGestureRecognizer *)screen { NSLog(@"screen"); }