UITouch UIGestureRecognizer

2414 ワード

1:今回touch座標
CGPoint point = [[touches anyObject] locationInView:self];     

2:前回touch座標
CGPoint prevPoint = [[touches anyObject] previousLocationInView:self];

3:利用 UIpinchGestureRecognizerによるView通過 Transform縮小拡大
ステップ1:ジェスチャー捏合識別器の登録
UIPinchGestureRecognizer *pinch = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(doPinch:)] autorelease];
[self addGestureRecognizer:pinch];

ステップ2:doPinchメソッドの実装
#pragma mark - UIPinchGestureRecognizer
- (void)doPinch:(UIPinchGestureRecognizer *)pinch
{
    CGAffineTransform newTransform = CGAffineTransformScale(self.transform, pinch.scale, pinch.scale);                 
    [self setTransform:newTransform];
    [pinch setScale:1];
}

4:UIGestureRecognizerジェスチャー優先度調整(IOS開発のジェスチャー-UIGestureRecognizer共存より抜粋)
//       ,                
[singleRecognizer requireGestureRecognizerToFail:doubleRecognizer];

5:  UIGestureRecognizerはイベントのトリガに成功した後、ジェスチャーの実際のトリガ状況を識別する状態があります.例えば、いつ開始されたのか、いつ終了したのかなどです.
if (longGesture.state == UIGestureRecognizerStateBegan)

6:iOSは6種類のシステムレベルのジェスチャーを開発者に提供します.
1:UITapGestureRecognizer  Tap(ちょっと)
2:UIPinchGestureRecognizer Pinch
3:UIRotationGestureRecognizer Rotation(回転)
4:UISwipeGestureRecognizer Swipe(スライド、クイック移動)
5:UIPanGestureRecognizer Pan(ドラッグ、スロー)
6:UILongPressGestureRecognizer LongPress(長押し)
1:3秒長押しするとイベントがトリガーされます
longPressGR.minimumPressDuration = 3;
トリガ後:設定されたメソッドが2回スケジュールされ、2つのステータスが入力されます.
Begin  :長い間押し続けたときにトリガーされました
End:手を離すとトリガー
7:IOS 6より先にUITapGestureRecognizerとUIButtonイベントを共存させる(iOS 6以降はデフォルトでサポート)
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    //    UIButton,        
    if ([touch.view isKindOfClass:[UIButton class]])
    {
        return NO;
    }
    return YES;
}
注:iOS 6でTapGestureのactionを先に実行するにはcancelsTouchesInViewをNOに設定する必要がある.
8:移動と速度によるジェスチャー移動のビューインタラクション
CGPoint velocity = [panGestureRecognizer velocityInView:controlPanelWindow];//  
CGPoint translation = [panGestureRecognizer translationInView:controlPanelWindow];//