8

在 iOS 6 beta 4 和 iOS 5.1.1 中,我有左/右滑动允许用户在不同的 QLPreviewControllers 之间滑动,托管在 UIViewController 中。

在 iOS 6 的发布版本中,现在完全忽略了滑动。

试图将 UIView 作为预览控制器的子视图,以试图让托管预览控制器的视图在预览控制器有机会吞下它们之前拦截滑动,但这些从未被触发。

任何看到这个或知道解决方法的人。

谢谢,

4

3 回答 3

2

我遇到了同样的问题,但 UITapGestureRecognizer 不能在 QLPreviewController 上工作。在 iOS 6 中,这对于 UIGestureRecognizer 对象来说就像是一个黑洞……没有什么能让它脱离那里!

但是我确实找到了解决方法。我是 QLPreviewController 的子类,所以在我的子类中我滥用了(相对)新的 viewWillLayoutSubviews 方法并添加了以下代码片段:

UIView *overlay = [[UIView alloc] initWithFrame:self.view.frame];
overlay.backgroundColor = [UIColor whiteColor];
overlay.alpha = .002f;
for (UIView *v in self.view.subviews)
{
    [v addSubview:overlay];
}
[overlay release];

这可能有点矫枉过正,但我​​基本上进入了所有快速查看子视图,并向它们添加了一个可以接受手势的视图。我选择了 .002 alpha,因为降低它会导致手势再次被忽略。

于 2012-09-28T01:12:16.920 回答
2

我还发现使用相同的代码,UIGestureRecognizers 已经停止在 iOS 6 下工作。但它并没有完全损坏。Apple 开发示例项目“SimpleGestureRecognizers”仍然有效。比较代码后,我发现明确的“addGestureRecognizer”解决了问题(除了您在 IB 下使用的所有其他步骤)。假设您的 IBOutlets 名称之一是 leftSwiftRecognizer,您可以这样做:

- (void)viewDidLoad
{
    [super viewDidLoad];
    ....
    // swipe recognizer
    [self.view addGestureRecognizer:self.leftSwiftRecognizer];

}
于 2012-11-01T07:52:39.217 回答
1

您尝试的解决方案很接近,但可能与您应该做的相反。与其将另一个视图添加为预览控制器的子视图,不如将预览控制器添加为 UIView 的子视图。

在标准 UIView 中子视图预览控制器。然后,将您的手势重新分配给 UIView 的 gestureRecognizers 集合,将它们从 QLPreviewController 的集合中删除。

不知道为什么会发生这种变化,但我的应用程序也遇到了同样的问题,除了我,它是 UITableView 不再滚动了。

于 2012-09-21T17:39:26.053 回答