在 Monotouch 中的 UIPageViewController 中检测控件上的触摸事件
Posted
技术标签:
【中文标题】在 Monotouch 中的 UIPageViewController 中检测控件上的触摸事件【英文标题】:Detecting touch events on controls within UIPageViewController in Monotouch 【发布时间】:2012-01-19 21:40:23 【问题描述】:我的 ViewController 上有几个按钮位于 UIPageViewController
的 GestureRecognizers
覆盖的区域内。此区域中的点击被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
。
然后您需要将此委托分配给分配给您的UIPageViewController
的GestureRecognizers
。
MyUIGestureRecognizerDelegate del = new MyUIGestureRecognizerDelegate ();
UIPageViewController pvc = new UIPageViewController ();
foreach (var gr in pvc.GestureRecognizers)
gr.Delegate = del;
这使您可以调整手势的解释方式。如果手势本身未处理,则应将其路由到您自己的控件/按钮。
【讨论】:
以上是关于在 Monotouch 中的 UIPageViewController 中检测控件上的触摸事件的主要内容,如果未能解决你的问题,请参考以下文章
在 UITableView 下方的 UIPageView 上检测滑动事件