Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIPageViewController工作不正常_Iphone_Ios_Cocoa Touch_Uigesturerecognizer_Uipageviewcontroller - Fatal编程技术网

Iphone UIPageViewController工作不正常

Iphone UIPageViewController工作不正常,iphone,ios,cocoa-touch,uigesturerecognizer,uipageviewcontroller,Iphone,Ios,Cocoa Touch,Uigesturerecognizer,Uipageviewcontroller,我正在使用UIPageViewController在webview中加载10个网页 所有网页均已正确加载。但我现在面临着一个奇怪的问题 - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 现在我在第一页。因此,不可能回到过去 - (UIView

我正在使用UIPageViewController在webview中加载10个网页

所有网页均已正确加载。但我现在面临着一个奇怪的问题

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
现在我在第一页。因此,不可能回到过去

- (UIViewController *)pageViewController:(UIPageViewController *) pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
在我加载第一个页面后,我只是用WebView上下滚动。突然调用了
viewControllerAfterViewController
方法。奇怪的是,它没有移动到下一个视图,即(第二页)没有加载


有什么问题吗

我不确定,但我认为问题在于手势识别器,或是这些CGRECT的位置。基本上,页面视图控制器监听触摸移动。因此,如果用户滑动滚动条(在网络视图上),页面视图将尝试执行翻页。(我猜)我认为解决方案是确保页面视图触摸位置(CGRect)不与web视图重叠。显然,您可以设置UIPageViewController“翻页”的触摸位置(区域)

您可以先在iOS参考库中查找“UIgestureRecognitor类参考”。我希望这对您有所帮助

以下是我在那里发现的:

地点查看: 返回作为接收器表示的手势在给定视图中的位置计算的点

  • (CGPoint)位置视图:(UIView*)视图 参数 看法 发生手势的UIView对象。指定nil表示窗口。 返回值 局部视图坐标系中的一个点,用于标识手势的位置。如果为视图指定了nil,则该方法将返回窗口基本坐标系中的手势位置
讨论 返回值是由UIKit框架计算的手势的通用单点位置。它通常是手势中涉及的触摸的质心。对于UIWipegestureRecognitor和UIApgestureRecognitor类的对象,此方法返回的位置对手势具有特殊意义。此意义这些类的参考文件中记录了

可用性 在iOS 3.2及更高版本中提供。 另见 –触摸位置:查看: 声明于 UIgestureRecognitor.h 触摸位置:查看: 返回给定视图的局部坐标系中某个手势触摸的位置

  • (CGPoint)触摸位置:(NSUInteger)视图中的触摸索引:(UIView*)视图 参数 接触指数 由接收器维护的专用数组中UITouch对象的索引。此触摸对象表示当前手势的触摸。 看法 发生手势的UIView对象。指定nil表示窗口。 返回值 局部视图坐标系中的一个点,用于标识触摸的位置。如果为视图指定了nil,则该方法将返回窗口基本坐标系中的触摸位置
可用性 在iOS 3.2及更高版本中提供。 另见 –位置查看: 声明于
UIGestureRecognizer.h

此处描述的类似问题:实际上,如果我点击最左端或最右端,UIPageViewController会滚动。因此,我为(UIGestureRecognizer*pageController.gestureRecognizers中的recognizer){if([recognizer isKindOfClass:[UIApgestureRecognizer class]])添加了以下代码{recognizer.enabled=NO;}}所以这一个避免了点击手势。但是现在,如果我在webview的左侧上下滚动,viewControllerAfterViewController方法将被调用