2011-12-28 4 views
0

UITableViewControllerのメソッドを使用してUIGestureRecognizerクラスの接触回数をカウントしています。 (my earlier questionUITableViewControllerの "long presses"をオーバーライドするUIGestureRecognizer

私は正しくカウントすることができますが、tableViewのdidSelectRowAtIndexPathメソッドが非常に短いタップで呼び出されるようにタッチイベントをオーバーライドしています。 長押しでは、セルは強調表示されますが、didSelectRowAtIndexPathは発生しません。

何をするかを教えてください。おかげさまで

+0

いいえ.......?! – BufferStack

答えて

0

試してみるべきことがいくつかあります。まず、即座に問題になるのは、ジェスチャ認識機能が、タップ/タッチを追加して発射の要件を満たすかどうかを確認することが多分待っているということです。また、あなたのdidSelectRowAtIndexPathを呼び出す長いタッチ認識プログラムを追加することもできますが、有料の開発者であることを前提として、2010年のジェスチャー認識プログラムの最初の非常に良いWWDCセッションを見ていきます。複数のジェスチャ認識機能を実装して、必要なときに起動させることができます。

0

viewDidLoad()から呼び出すと、このコードをモノトック用に実装すると、longPressGestureRecognizerのアイデアが得られます。

void AddGestureRecognizersToImage (UIImageView imgView) 

{ 

var longPressGesture = new UILongPressGestureRecognizer (this, new Selector 

("ShowResetMenu")); 

    imgView.AddGestureRecognizer (longPressGesture); 

} 

[Export("ShowResetMenu")] 

void ShowResetMenu (UILongPressGestureRecognizer gestureRecognizer) 

{ 

if (gestureRecognizer.State == UIGestureRecognizerState.Began) 

{ 

var menuController = UIMenuController.SharedMenuController; 

    var resetMenuItem = new UIMenuItem ("Reset", new Selector ("ResetImage")); 

var location = gestureRecognizer.LocationInView (gestureRecognizer.View); 

BecomeFirstResponder(); 

menuController.MenuItems = new [] { resetMenuItem }; 

menuController.SetTargetRect (new RectangleF (location.X, location.Y, 2, 2), gestureRecognizer.View); 

      menuController.MenuVisible = true; 

      imageForReset = gestureRecognizer.View; 

     } 

    } 
関連する問題