【问题标题】:UIGestureRecognizer overriding "long presses" in UITableViewControllerUIGestureRecognizer 覆盖 UITableViewController 中的“长按”
【发布时间】:2011-12-28 09:17:33
【问题描述】:

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

虽然我能够正确地计算它们,但它以这样一种方式覆盖了触摸事件,即 tableView 的 didSelectRowAtIndexPath 方法仅在非常短的点击时被调用。 长按时,单元格会突出显示,但不会触发 didSelectRowAtIndexPath。

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

【问题讨论】:

    标签: iphone ios uigesturerecognizer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      从 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;
      
              }
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-18
        • 1970-01-01
        • 1970-01-01
        • 2018-03-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多