iOS 8中模式化部分的部分curl转换

我用两个VC创build了一个简单的应用程序。
我从第一个通过button打开第二个VC。 Seque是“Present Modally”,转换是“Partion Curl”。 这个scheme在iOS7上工作正常,但是在iOS8上,第一个VC的视图在curlanimation的末尾消失: 在这里输入图像说明

我也有同样的问题。 我在Xcode 6(beta 7)+ iOS 8(beta 5)中看到了它。 依然存在于两者的转基因种子中。

iOS 7.1的细节:

它被称为“部分curl”,并在iOS 7上显示(例如部分 – 您仍然可以看到窗口顶部的原始视图的一部分)。 在iOS 7上 – 当你点击这个部分暴露的“原始”视图时,视图展开回到原始的整个窗口。

iOS 8细节:

赛格不留任何原始的显示。 而任何一个水龙头,在窗口/屏幕上的任何地方 ,都会通过自动放松的方式返回原始视图。 如果你在视图上有一个UITextField,当你点击它时input一个值…原始视图返回而不触发任何关联的UITextField方法。 没有键盘显示,它只是展开到原始视图。

在我看来,与原始视图的部分显示的angular部相关联的触摸定义被错误地定义为整个窗口。

当然,我对iOS编程还很陌生,所以我的洞察力,如果准确的话,并不能给我一个线索来解决这个问题! 大声笑我希望有人在那里会有知识,至less提供一个可用的解决方法。

吉姆

PS我还没有足够的声望点投票或评论,因此我的答案是不是一个答案。

这是一个错误,或者(恕我直言)从苹果指示这个ModalTransitionStyle即将被弃用。 既然这可能是伪现象的最后一个遗迹,我认为这是世界的缩写。 我正在debugging几个小时的问题,关于一个模态的视图控制器上的不一致的触摸,使用这个过渡,把我的头发。 我切换到另一种模式转换风格和POOF – iOS8引起的所有问题都消失了。

基思

我遇到过同样的问题。 触摸屏幕上半部分的任何地方,导致模式closures(放松)。 改变了animation,世界再次和平。

所以,绝对是iOS8的一个bug。

简单的解决这个问题的方法是。

- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; for(UIGestureRecognizer *gesture in [self.view gestureRecognizers]) { if([gesture isKindOfClass:[UIGestureRecognizer class]]) { [self.view removeGestureRecognizer:gesture]; } } } 

您需要查找包含UIDismissCurlUpTapGestureRecognizer的超级视图,以查看要禁用该手势识别器的视图。 在我的情况下exapmle:

po self.view.superview?.superview?.superview?.gestureRecognizers

▿可选>▿一些:2个元素 – [0]:; target = <(action = handleNavigationTransition :, target = < UINavigationInteractiveTransition 0x15826e2e0>)>> – [1]:< UIDismissCurlUpTapGestureRecognizer :0x15838a2c0; 状态=可能; view =; target = <(action = _handleTapToDismissModalCurl :, target =)>>

所以我删除了这个手势识别器,这部分代码:

 override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) if (self.view.superview?.superview?.superview != nil){ if (self.view.superview!.superview!.superview!.gestureRecognizers != nil){ for gestureRecognizer in self.view.superview!.superview!.superview!.gestureRecognizers!{ if (gestureRecognizer.isKindOfClass(UITapGestureRecognizer)){ self.view.superview!.superview!.superview!.removeGestureRecognizer(gestureRecognizer) } } } } } 

注意:这是非常重要的,你在viewDidAppear中这样做,因为视图在加载周期的早期并不知道它的超级视图。

我也追赶了这个BUG好几天! 原来你仍然可以成功地使用Partial Curl; 只有在ANIMATES框被选中时才会出现问题。 取消检查animation框,你很好走!