UIGestureRecognizer在UITableViewController中覆盖“长按”

时间:2011-12-28 09:17:34

标签: iphone ios uigesturerecognizer

我使用-(NSUInteger)numberOfTouches类的UIGestureRecognizer方法来计算UITableViewController中的触摸次数。 (my earlier question

虽然我能够正确计算它们,但是它覆盖触摸事件的方式只能在很短的时间内调用tableView的didSelectRowAtIndexPath方法。 长按,单元格会突出显示,但didSelectRowAtIndexPath不会被触发。

请指导应该做什么。 感谢。

2 个答案:

答案 0 :(得分:0)

有几件事要尝试。首先,您的直接问题是手势识别器可能正在等待您是否要添加水龙头/触摸以满足其射击要求。您还可以添加一个长触摸识别器来调用您的didSelectRowAtIndexPath,但我会首先在2010年首先观看手势识别器上非常好的WWDC会话,因为您是一名付费开发人员,这会让您对如何正确理解实现多个手势识别器,以便在您需要时触发它们。

答案 1 :(得分:0)

从viewDidLoad()调用它我也实现了monotouch的这个代码,它给出了关于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;

        }

    }