在 Monotouch 中的 UIPageViewController 中检测控件上的触摸事件

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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;

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

【讨论】:

以上是关于在 Monotouch 中的 UIPageViewController 中检测控件上的触摸事件的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableView 下方的 UIPageView 上检测滑动事件

UIPageView UIWebView 预取

UITableView 比 UIPageView 内的屏幕大

将 UIPageView 添加为屏幕的一部分

SwiftUI UIPageView 编译错误和操作表问题

MonoTouch 中的弱事件模式