在键盘上度过了漫长的一天,所以我伸出手来:-)
我有一个UIPageViewController
基本遵循 Apple 标准模板的典型实现。我正在尝试添加一个覆盖层,允许用户执行诸如触摸按钮以跳转到某些页面或关闭视图控制器以转到应用程序的另一部分的操作。
我的问题是UIPageViewController
从我的覆盖子视图中捕获所有事件,我正在努力寻找可行的解决方案。
这是一些帮助示例的代码...
在 viewDidLoad
// Page creation, pageViewController creation etc....
self.pageViewController.delegate = self;
[self.pageViewController setViewControllers:pagesArray
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:NULL];
self.pageViewController.dataSource = self;
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
// self.overlay being the overlay view
if (!self.overlay)
{
self.overlay = [[MyOverlayClass alloc] init]; // Gets frame etc from class init
[self.view addSubview:self.overlay];
}
这一切都很好。UIPageViewController
覆盖被创建,它会显示在您所期望的页面顶部。当页面翻转时,它们会在覆盖层下方翻转 - 正如您所期望的那样。
但是,视图UIButtons
内self.overlay
永远不会获得点击事件。UIPageViewController
响应所有事件。
我已尝试-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
根据此处的建议覆盖但没有成功。
我已经尝试手动捕获所有事件并自己处理它们 - 不起作用(老实说,即使它这样做似乎有点像黑客)。
有没有人有关于如何捕获事件的建议或者更好的方法来使用覆盖在UIPageViewController
.
非常感谢任何和所有帮助!