Xcode - pageview禁用屏幕右侧控件的功能

时间:2015-06-06 08:41:02

标签: ios objective-c xcode

我正在优化我的代码以支持iOS8和iOS7,该应用程序在iOS8中完美运行。它最初的构建只是为了支持iOS8,但我一直在调整次要设置,所以它也应该支持iOS7。现在我唯一想到的问题是在iOS7中 - 右下角的控件被忽略了。左下角的主页按钮工作没有问题,如果我改变右下角的两个控件的位置,左下角,那么它们也可以正常工作。就好像有一个"面具"在页面视图控制器的右侧顶部。它是一个书籍应用程序,因此页面视图用于支持页面之间的滑动,就像普通的书籍应用程序布局一样。

基本上我的问题是,如果有办法删除这个禁用的叠加层,或者我是否应该调整其他一些设置来获取这些输入?当用户点击右下方的控件时,我也尝试NSLog点击命令,但只有当控件位于屏幕的左侧时才会出现日志。

我也尝试过:通过从网页浏览中删除点击识别器,但它都不起作用。

self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;

// Find the tap gesture recognizer so we can remove it!
UIGestureRecognizer* tapRecognizer = nil;
for (UIGestureRecognizer* recognizer in self.pageViewController.gestureRecognizers) {
    if ( [recognizer isKindOfClass:[UITapGestureRecognizer class]] ) {
        tapRecognizer = recognizer;
        break;
    }
}

if ( tapRecognizer ) {
    [self.view removeGestureRecognizer:tapRecognizer];
    [self.pageViewController.view removeGestureRecognizer:tapRecognizer];
}

enter image description here

修改

@Rory McKinnel - 这是视图层次结构的屏幕截图。

enter image description here

这是一个测试,我将另一个视图的关闭按钮放在与播放按钮相同的位置,但这仍然有效。看来它只是在网页浏览中存在问题。

enter image description here

更新问题

我玩了一些日志,所以看看受影响的区域等等。在应用程序中,有一个功能可以点击书中的单词突出显示并使用音频文件读出。此点击事件也仅适用于屏幕左侧。如果我点击"忽略"区域,事件未执行,甚至没有为该功能创建日志。

我已经测量过了,这是对每个侧面覆盖的大小的估计。当我点击"忽略"屏幕的一部分,唯一发生的功能是滑动到下一页。

enter image description here

例如:我可以点击并听到这个词:" Adipisicing"但不是" elit"在图像的第一行。

1 个答案:

答案 0 :(得分:1)

在讨论之后,问题似乎与在横向模式下添加子控制器和默认情况下使用在portait中的框架添加子控件有关。这似乎与iOS7和iOS8之间的差异以及如何定义屏幕边界有所不同:iOS7上面向设备,iOS8中面向接口。因此,在iOS7上,输入仅限于子控制器的纵向区域。

解决方案是使用以下方法将iOS控制器框架显式设置为反向:

if ([[[UIDevice currentDevice] systemVersion] floatValue] < 8)
  self.pageViewController.frame = CGRectMake(self.view.frame.origin.x,
                                             self.view.frame.origin.y,
                                             self.view.frame.size.height,
                                             self.view.frame.size.width);
相关问题