gpt4 book ai didi

objective-c - UIPageViewController 捕获所有 UITapGestureRecognizer 事件

转载 作者:太空狗 更新时间:2023-10-30 03:53:22 24 4
gpt4 key购买 nike

在键盘上度过了漫长的一天,所以我伸出手:-)

我有一个 UIPageViewController 的典型实现,基本上遵循 Apple 的标准模板。我正在尝试添加一个叠加层,以允许用户执行诸如触摸按钮以跳转到特定页面或关闭 View Controller 以转到应用程序的另一部分之类的操作。

我的问题是 UIPageViewController 捕获了我的覆盖 subview 中的所有事件,我正在努力寻找可行的解决方案。

这里有一些代码来帮助这个例子......

在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 页面的顶部。当页面翻动时,它们会在叠加层下方翻动 - 同样如您所料。

但是,self.overlay View 中的 UIButtons 永远不会获得点击事件。 UIPageViewController 响应所有事件。

我尝试根据此处的建议覆盖 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 但没有成功。

UIPageViewController Gesture recognizers

我已经尝试手动捕获所有事件并自己处理它们 - 行不通(老实说,即使它成功了,看起来也有点像 hack)。

有没有人对如何捕获事件有建议,或者有更好的方法在 UIPageViewController 的顶部使用覆盖。

非常感谢任何帮助!!

最佳答案

尝试遍历 UIPageViewController.GestureRecognizers 并将 self 指定为这些手势的委托(delegate)并实现

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;

你的代码可能是这样的:

在viewDidLoad中

for (UIGestureRecognizer * gesRecog in self.pageViewController.gestureRecognizers)
{
gesRecog.delegate = self;
}

并添加如下方法:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if (touch.view != self.pageViewController.view]
{
return NO;
}
return YES;
}

关于objective-c - UIPageViewController 捕获所有 UITapGestureRecognizer 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12083124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com