0

xCode 4.3.2 を使用して、view.m の initWithFrame に次のコードがあります。

 UIPinchGestureRecognizer *recognizer = [[UIPinchGestureRecognizer alloc]
            initWithTarget: self action: @selector(pinch:)
 ];

 oldScale = recognizer.scale;
 [self pinch: recognizer];
 [self addGestureRecognizer: recognizer];

 // code to create label is also in here, works.  label displays no problem

 [self addSubview: label];

私のピンチ方法は次のとおりです。

- (void) pinch: (UIPinchGestureRecognizer *) recognizer
{
    NSLog(@"pinch:");
    label.bounds = CGRectMake(
    (self.bounds.size.width - width * recognizer.scale) / 2,
    (self.bounds.size.height - height * recognizer.scale) / 2,
    width * recognizer.scale,
    height * recognizer.scale
    );

    label.font = [UIFont systemFontOfSize: 20 * recognizer.scale];
    NSString *verdict;

    if (recognizer.scale > oldScale) {
        verdict = @"spread";
    } else if (recognizer.scale < oldScale) {
        verdict = @"pinch";
    } else {
        verdict = @"neither";
    }
    oldScale = recognizer.scale;

    label.text = [NSString stringWithFormat: @"%@ %g",
                 verdict, recognizer.scale
    ];
}

私は実際に initWithFrame メソッドでピンチを呼び出しているため、一度実行されますが、iphone シミュレーターでピンチを実行すると、まったく登録されません。私が知らないxcode 4.3.2にいくつかの設定がありますか? このコードは、実行しようとした他のすべての場所で機能しますが、これらのバージョンの xcode はすべて 4.3 です。

4

2 に答える 2

1

UIGestureRecognizerDelegate.h ファイルに追加

ビューの.mファイルで次のコードを使用するとロードされました...

// Gesture Reconizer Delegate Methods
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return YES;
 }

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
  return  YES;
 }

 -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
   return  YES;
 }



UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(checkpinch)];
[pinch setDelegate:self];
[pinch setDelaysTouchesBegan:YES];
[self.ScrollView addGestureRecognizer:pinch];
[pinch release];

// ジェスチャー認識メソッド

-(void)checkpinch {    

 NSLog(@"YES");
}

>>こちらの編集版をご覧ください。

ビューで検出したい場合は、次の参照を参照してください...

UIView でピンチを検出する

うまくいけば、これはあなたを助けるでしょう...

于 2012-04-27T13:20:10.697 に答える
0

1) VC で、ビューのインスタンスに IBoutlet プロパティを作成します 2) その IBOutlet をビューに接続します 3) ビューをオーバーライドして、VC で UIPinchGetsureRecognizer をセットアップしますsetter メソッドを使用してターゲットをビューに変更し、pinch メソッドをビューに保持します。このようにして、ビューがロードされるたびに UIPinchGetsureRecognizer がロードされ、ピンチの準備が整います。そうすれば、pinch メソッドを呼び出す必要はありません (目的を無効にします)。KB

于 2012-04-27T14:16:06.670 に答える