【问题标题】:Detecting touch events on controls within UIPageViewController in Monotouch在 Monotouch 中的 UIPageViewController 中检测控件上的触摸事件
【发布时间】:2012-01-19 21:40:23
【问题描述】:

我的 ViewController 上有几个按钮位于 UIPageViewControllerGestureRecognizers 覆盖的区域内。此区域中的点击被UIPageViewController 消耗,永远不会到达下面的按钮。

我已阅读 iPad - PageViewController - Show next view controller on button clickUIPageViewController Gesture recognizers 并了解其原理,但之前没有 Obj-C 经验,并且正在努力在 C# 中重新创建这些解决方案。

有人可以提供一个在 MonoTouch 中是如何完成的示例吗?

【问题讨论】:

    标签: c# ios xamarin.ios uigesturerecognizer uipageviewcontroller


    【解决方案1】:

    这是您的第一个链接如何使用 MonoTouch 转换为 C#(注意:未尝试)。

    首先,您将为UIGestureRecognizer 创建自己的(非 .NET)delegate,如下所示:

    class MyUIGestureRecognizerDelegate : UIGestureRecognizerDelegate {
    
        public override bool ShouldReceiveTouch (UIGestureRecognizer recognizer, UITouch touch)
        {
            return (!(touch.View is UIControl));
        }
    }
    

    如果触摸手势不适用于UIControl(包括按钮),它将返回true

    然后您需要将此委托分配给分配给您的UIPageViewControllerGestureRecognizers

    MyUIGestureRecognizerDelegate del = new MyUIGestureRecognizerDelegate ();
    
    UIPageViewController pvc = new UIPageViewController ();
    
    foreach (var gr in pvc.GestureRecognizers)
        gr.Delegate = del;
    

    这使您可以调整手势的解释方式。如果手势本身未处理,则应将其路由到您自己的控件/按钮。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      相关资源
      最近更新 更多