2015年

6月

12日

Objective-C マルチタッチイベント パン・ピンチ・回転  - Gesture Recognizer

マルチタッチイベント パン・ピンチ・回転

ユーザが画面タッチすると、マルチタッチイベントが発生して、「指が画面に触れている」「指が動いた」「指が画面から離された」「何本の指で同時にタッチしているか」ということを認識できるようになります。通常、アプリを作成する上で必ず制御しなければならないイベントとなっています。

ViewController.m

#import "ViewController.h"


@interface ViewController ()


@property (weak, nonatomic) IBOutlet UIImageView *imStarView;


@end


@implementation ViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    

    // 背景に画像をセットする

    UIImage *image  = [UIImage imageNamed:@"bg01"];

    self.view.backgroundColor = [UIColor colorWithPatternImage:image];

    // タッチ / キーイベント許可設定 YES

    self.imStarView.userInteractionEnabled = YES;

    // アニメーションの開始

//    [self animateStart:self.imStarView];

    

    

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


// アニメーション回転開始(要:QuartzCore.framework

- (void)animateStart:(UIImageView *)imageView {

// アニメーション設定

// (種類(Z軸回転))

CABasicAnimation *ani =

    [CABasicAnimation animationWithKeyPath:

     @"transform.rotation.z"];

// (変化値)

ani.fromValue = [NSNumber numberWithDouble:0.0];

ani.toValue   = [NSNumber numberWithDouble:2.0 * M_PI];

// (アニメーション時間())

ani.duration = 2.0;

// (繰返し回数)

ani.repeatCount = HUGE_VALF; // 無限

// アニメーション開始

[imageView.layer addAnimation:ani forKey:@"ANIM01"];

}


// パン時

- (IBAction)panImage:(UIPanGestureRecognizer *)sender {

    

    //NSLog(@"%s", __func__);

    // 対象の座標を取得

    CGPoint posNow = sender.view.center; // 中央位置の座標

    // ドラック移動量の取得

    CGPoint posMov = [sender translationInView:self.view];

    // 対象の移動

    sender.view.center = CGPointMake(posNow.x + posMov.x,

                                      posNow.y + posMov.y);

    // ドラッグの移動量をクリア

    [sender setTranslation:CGPointZero inView:self.view];

}


// ピンチ時

- (IBAction)PinchImage:(UIPinchGestureRecognizer *)sender {

    

    // 伸縮

    sender.view.transform =

        CGAffineTransformMakeScale(sender.scale, sender.scale);

    

}


// 回転時

- (IBAction)RotationImage:(UIRotationGestureRecognizer *)sender {

    

    // 回転

    sender.view.transform =

        CGAffineTransformMakeRotation(sender.rotation);

    

}


@end

GitHub Gesture

  

目 次