Quantcast
Channel: 教えて!goo 参照の多い質問(デジタルライフ/207)
Viewing all articles
Browse latest Browse all 12809

UIButtonを始点とするフリックの取得について

$
0
0
iPhoneアプリの開発を行っています。 その中で、あるView(下記ソースではtestView)の中でフリックが行われた場合に 特定の動作をさせるようにしたいと考え、下記のソース引用の通り実装しました。 ViewControllerの中にUIView(testView)を配置し、その中に、UIButton(testButton) を配置し、フリックが行われた際の開始位置と終了位置を取得しています。 ですが、下記実装ですと、フリックの開始位置が、testButton上である場合、 ViewController.m 上の、touchesBegan、touchesEnded を通りません。 カスタムのボタンを作って試してみたところ、ButtonのtouchesBegan、 touchesEndedには入ってきており、testButtonが非活性の場合には、 ViewController.m 上の、touchesBegan、touchesEnded を通って いるようですので、ボタン側のイベントが反応し、ViewController.m に入ってこず終了しているものと思っています。 これを、testView上のどの位置でフリック開始された場合でも同様の 処理をさせたいのですが、何か良い解決方法をご存知でしたら、 ぜひ、お知恵をお借りしたいです。 プログラム初心者のため、つたない質問で申し訳ありません。 よろしくお願いいたします。 ■ViewController.h の実装 ----------------------------------------- @interface ViewController : UIViewController { // フリック開始位置、終了位置 CGPoint _tBegan, _tEnded; } // ビュー @property (weak, nonatomic) IBOutlet UIView *testView; // @property (weak, nonatomic) IBOutlet UIButton *testButton; ■ViewController.m の実装 ----------------------------------------- // タッチ開始 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch * touchBegan = [touches anyObject]; _tBegan = [ touchBegan locationInView: self.testView ]; } // タッチ終了 -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch * touchEnded = [touches anyObject]; _tEnded = [ touchEnded locationInView: self.testView ]; NSInteger distanceHorizontal = ABS( _tEnded.x - _tBegan.x ); NSInteger distanceVertical = ABS( _tEnded.y - _tBegan.y ); NSLog(@"%d", distanceHorizontal); NSLog(@"%d", distanceVertical); NSLog(@"X:%f->%f", _tBegan.x,_tEnded.x); NSLog(@"Y:%f->%f", _tBegan.y,_tEnded.y); if ( distanceHorizontal > distanceVertical ) { if ( _tEnded.x > _tBegan.x ) { NSLog(@"RIGHT Flick"); // スタート位置がmoveView内の場合、右フリックに応じた処理を記述予定 } else { NSLog(@"LEFT Flick"); // スタート位置がmoveView内の場合、左フリックに応じた処理を記述予定 } } else { if ( _tEnded.y > _tBegan.y ) { NSLog(@"DOWN Flick"); // 下向きフリックに応じた処理を記述予定 } else { NSLog(@"UP Flick"); // 上向きフリックに応じた処理を記述予定 } } }

Viewing all articles
Browse latest Browse all 12809

Trending Articles