gpt4 book ai didi

objective-c - UIPageController 中的 UIViewController 如何获取触摸事件?

转载 作者:太空狗 更新时间:2023-10-30 03:34:02 25 4
gpt4 key购买 nike

似乎按钮根本没有被按下。

我试过:

UIPageViewController Gesture recognizers

但是,这里有问题

如果UIPageViewController的页面过渡是UIPageViewControllerTransitionStyleScroll则

self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
NSLog(@"%@",self.pageViewController.gestureRecognizers.description);
NSLog(@"%@",self.pageViewController.gestureRecognizers.description);

将只是空的。

我尝试将我自己的 gestureRecoqnizers 而不是按钮添加到 UIViewControllers 的 subview 中。还是不行。

所以我有一个 UIPageViewController,它显示一个 UIViewController,它的 View 有一些按钮。如何按下该按钮?

我在这里也尝试了两种解决方案:

http://emlyn.net/posts/stopping-gesture-recognizers-in-their-tracks

没有效果。首先,我不能禁用 UIPageViewController 的手势识别器,因为没有这样的东西。在 scrollView 模式下,UIPageViewController 没有手势识别器。

我尝试将自己的手势识别器添加到我自己的按钮,但从未调用过。

我希望 UIPageViewController 仍然可以处理滑动。但不要点击。

我无法访问 UIPageViewControllers 的手势识别器,因为 self.pageViewController.gestureRecognizers 是空的。 UIPageViewController 似乎只是“吸收”了所有点击事件。所以我的按钮没有得到它。

我可以在 UIPageViewController 前面添加按钮,但该按钮将吸收我希望 UIPageVIewController 仍然处理的滑动 Action 。

顺便说一下,如果我们使用来自 IOS 的模板(创建一个基于页面的应用程序,并将转换更改为滚动 pageviewcontroller.gesturerecoqnizers 将为空

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// Configure the page view controller and add it as a child view controller.
self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];//Turn this to scroll view
self.pageViewController.delegate = self;

SDDataViewController *startingViewController = [self.modelController viewControllerAtIndex:0 storyboard:self.storyboard];
NSArray *viewControllers = @[startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];

self.pageViewController.dataSource = self.modelController;

[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];

// Set the page view controller's bounds using an inset rect so that self's view is visible around the edges of the pages.
CGRect pageViewRect = self.view.bounds;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
pageViewRect = CGRectInset(pageViewRect, 40.0, 40.0);
}
self.pageViewController.view.frame = pageViewRect;

[self.pageViewController didMoveToParentViewController:self];

// Add the page view controller's gesture recognizers to the book view controller's view so that the gestures are started more easily.
self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
NSLog(@"%@",self.pageViewController.gestureRecognizers.description); //This is empty
while (false);
}

最佳答案

也许您可以在 UIPageViewController 中设置自定义手势识别器。这样,您将能够通过 UITouch 事件进行过滤,方法是在您的手势识别器委托(delegate)(用于您的 UIPageViewController 的委托(delegate))中实现这一点:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gesture shouldReceiveTouch:(UITouch *)touch {            

if (touch.tapCount > 1) { // It will ignore touch with less than two finger
return YES;
}
return NO;
}

这样,您将告诉 UIPageViewController gestureRecognizer 不关心用一根手指触摸。你必须尝试一下,但我认为它可能会成功。这里的问题是你必须让你的用户用两根手指滑动......

检查 here其他答案

关于objective-c - UIPageController 中的 UIViewController 如何获取触摸事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17986237/

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