2012-02-19 7 views
6

私はIBを介してジェスチャ認識プログラムを追加する方法を知っていますが、私はIBを使用しないでそれを理解しようとしています。gesturerecongnizerをプログラムで追加する

だから基本的には、今持っているもの

blue1.userInteractionEnabled = YES; 
UIPanGestureRecognizer *pgr = [[UIPanGestureRecognizer alloc] 
           initWithTarget:self action:@selector(handlePan:)]; 

[blue1 addGestureRecognizer:pgr]; 
[pgr release]; 

であると私handlePanは、私はIBの上にそれを行うと私は作品の周りのムービーにできる午前た場合、これは正常に動作

-(IBAction)handlePan:(UIPanGestureRecognizer *)recognizer { 

    CGPoint translation = [recognizer translationInView:self.view]; 

    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y); 

    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view]; 

} 

です。

今はコード化されているように動かない原因を理解していません。

何か助けていただければ幸いです。

私もhandlePanで - (IBAction)ではなく - (void)を試みましたが、それもうまくいきませんでした。

+0

最初のコードセグメントはどこにありますか?どこかの 'init'メソッドにありますか? – dasblinkenlight

+0

最初のコードセグメントは、viewdidloadから呼び出されるメソッド内にあります。これは、ビューの読み込みが終わるとすぐに実行したいメソッドです。 –

+0

なぜ[pgr release];と書いたのですか?この例ではARCを使用していませんか、またはジェスチャー認識ツールを作成して追加するときに必要なことはありますか? –

答えて

5

このコードはIBでは動作しますが、コードでは機能しないという事実は、エラーがコードの最初のブロックにあることを示しています。私の疑いは、blue1nilであるという疑いがあります。 viewDidLoadより前にビューを変更しようとしないでください。すべてnilinitWithFrame:となり、awakeFromNibになります。

+0

ありがとう、別の変数をtrueに設定する前にこのメソッドを呼び出したので、この部分をスキップしたので、他の変数はfalseです。 –

関連する問題