手势识别器基本练习
Main.storyboard
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
- <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5053" systemVersion="13D65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="vXZ-lx-hvc">
- <dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
- </dependencies>
- <scenes>
- <!--View Controller-->
- <scene sceneID="ufC-wZ-h7g">
- <objects>
- <viewController id="vXZ-lx-hvc" customClass="LWTViewController" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
- <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <subviews>
- <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="scene" id="i13-3w-YRs">
- <rect key="frame" x="48" y="149" width="224" height="182"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- </imageView>
- </subviews>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
- </view>
- <connections>
- <outlet property="imageView" destination="i13-3w-YRs" id="omC-0A-gHm"/>
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
- </objects>
- </scene>
- </scenes>
- <resources>
- <image name="scene" width="223" height="181"/>
- </resources>
- <simulatedMetricsContainer key="defaultSimulatedMetrics">
- <simulatedStatusBarMetrics key="statusBar"/>
- <simulatedOrientationMetrics key="orientation"/>
- <simulatedScreenMetrics key="destination"/>
- </simulatedMetricsContainer>
- </document>
View Code
LWTViewController.m
- //
- // LWTViewController.m
- // 手势识别器 -- UIGestureRecognizer
- //
- // Created by apple on 14-6-14.
- // Copyright (c) 2014年 lwt. All rights reserved.
- //
- #import "LWTViewController.h"
- @interface LWTViewController () <UIGestureRecognizerDelegate>
- @property (weak, nonatomic) IBOutlet UIImageView *imageView;
- @end
- @implementation LWTViewController
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- self.imageView.userInteractionEnabled = YES;
- self.imageView.multipleTouchEnabled = YES;
- // 拖拽
- UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panView:)];
- [self.imageView addGestureRecognizer:pan];
- // [self pinch];
- //
- // [self rotation];
- }
- - (void)panView: (UIPanGestureRecognizer *)pan
- {
- // NSLog(@"%@",pan);
- // 返回的值是以手指按下的点为原点
- CGPoint point = [pan translationInView:pan.view];
- // NSLog(@"拖拽 %@", NSStringFromCGPoint(point));
- self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform, point.x, point.y);
- // CGPoint temp = self.imageView.center;
- // temp.x += point.x;
- // temp.y += point.y;
- // self.imageView.center = temp;
- [pan setTranslation:CGPointZero inView:pan.view];
- }
- // 捏合
- - (void)pinch
- {
- UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchView:)];
- pinch.delegate = self;
- [self.imageView addGestureRecognizer:pinch];
- }
- - (void)pinchView : (UIPinchGestureRecognizer *)pinch
- {
- // NSLog(@"%@",pinch);
- // self.imageView.transform = CGAffineTransformMakeScale(pinch.scale, pinch.scale);
- self.imageView.transform = CGAffineTransformScale(self.imageView.transform, pinch.scale, pinch.scale);
- pinch.scale = 1.0;
- }
- // 旋转
- - (void)rotation
- {
- UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationView:)];
- rotation.delegate = self;
- [self.imageView addGestureRecognizer:rotation];
- }
- - (void)rotationView: (UIRotationGestureRecognizer *)rotation
- {
- // NSLog(@"%@",rotation);
- // 每次从最初的位置开始
- // self.iconView.transform = CGAffineTransformMakeRotation(gesture.rotation);
- // 在传入的transform基础上递增一个弧度
- self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, rotation.rotation);
- // 将旋转的弧度清零(注意不是将图片旋转的弧度清零, 而是将当前手指旋转的弧度清零)
- rotation.rotation = 0;
- }
- // 长按
- - (void)longPress
- {
- UILongPressGestureRecognizer *longPress =[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressView:)];
- longPress.minimumPressDuration = 2.0;
- // 手指按下后事件响应之前允许手指移动的偏移位
- longPress.allowableMovement = 50;
- [self.imageView addGestureRecognizer:longPress];
- }
- - (void)longPressView : (UILongPressGestureRecognizer *)longPress
- {
- NSLog(@"UILongPressGestureRecognizer");
- }
- // 轻扫
- - (void)swipe
- {
- UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeView:)];
- // 不是所有的都能实现
- // swipe.direction = UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionRight;
- // 设置轻扫的方向
- swipe.direction = UISwipeGestureRecognizerDirectionUp;
- [self.imageView addGestureRecognizer:swipe];
- UISwipeGestureRecognizer *swipe1 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeView:)];
- swipe1.direction = UISwipeGestureRecognizerDirectionLeft;
- [self.imageView addGestureRecognizer:swipe1];
- UISwipeGestureRecognizer *swipe2 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeView:)];
- swipe2.direction = UISwipeGestureRecognizerDirectionDown;
- [self.imageView addGestureRecognizer:swipe2];
- UISwipeGestureRecognizer *swipe3 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeView:)];
- swipe3.direction = UISwipeGestureRecognizerDirectionRight;
- [self.imageView addGestureRecognizer:swipe3];
- }
- - (void)swipeView : (UISwipeGestureRecognizer *)swipe
- {
- NSLog(@"UITapGestureRecognizer");
- }
- // 敲击
- - (void)tap
- {
- // 创建手势识别器
- UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
- tap.delegate = self;
- // tap.numberOfTapsRequired = 2;
- // tap.numberOfTouchesRequired = 2;
- // 添加手势识别器到View
- [self.imageView addGestureRecognizer:tap];
- // 监听手势识别器
- [tap addTarget:self action:@selector(tapView:)];
- }
- - (void)tapView : (UITapGestureRecognizer *)tap
- {
- NSLog(@"UITapGestureRecognizer");
- }
- #pragma mark - UIGestureRecognizerDelegate
- /*
- // 该方法返回的BOOL值决定了view是否响应点击事件
- - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
- {
- CGPoint point = [touch locationInView:touch.view];
- if (point.x < self.imageView.bounds.size.width * 0.5) {
- return YES;
- }else
- {
- return NO;
- }
- }
- */
- // 该方法返回的BOOL值决定了view是否能够同时响应多个手势
- - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
- {
- return YES;
- }
- @end
View Code
版权声明:本文为wentianblog原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。