iOS 8中模态segue的部分卷曲过渡

时间:2014-09-10 09:52:32

标签: ios objective-c ios8

我用两个VC创建了简单的应用程序 我从第一个按钮打开第二个VC。 Seque是“模态存在”,过渡是“Partion Curl”。这个方案在iOS7上工作正常,但在iOS8上,第一个VC的视图在curl动画结束时消失了: enter image description here

6 个答案:

答案 0 :(得分:12)

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

iOS 7.1细节:

它被称为"部分卷曲"并且在iOS 7上它会显示(例如,部分 - 您仍然可以在窗口顶部看到原始视图的一部分)。在iOS 7上 - 当您点击此部分曝光时,"原创"视图,视图退回到原始的完整窗口。

iOS 8细节:

segue NOT 保留任何原始显示。并且窗口/屏幕上的任意位置,通过自动展开返回原始视图。如果视图上有UITextField,当您点击它以输入值时......原始视图将返回而不会触发任何关联的UITextField方法。没有显示键盘,它只是简单地展开原始视图。

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

当然,我对iOS编程非常陌生,所以我的洞察力,如果准确的话,并没有给我一个如何解决它的线索!大声笑我希望那里的人能够掌握至少提供可用的解决方法的知识。

吉姆

P.S。我还没有足够的声誉点来投票或评论,因此我的答案不是答案。

答案 1 :(得分:3)

这是一个错误,或者是(恕我直言)Apple的一个指示,即该ModalTransitionStyle即将被弃用。既然这可能是伪形态的最后遗迹,我认为这是一个安全的赌注,它是这个世界的缩写。关于模态呈现的viewcontroller上的不一致触摸,使用这个过渡并拉出我的头发,我正在调试一个问题几个小时。我切换到另一种模态转换风格和POOF - iOS8引起的所有问题都消失了。

基思

答案 2 :(得分:1)

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

Document doc = createEmptyDocument();
doc.normalizeDocument();
Element pubElement = doc.createElement("publication");
pubElement.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns:lc", "http://.../lc");
pubElement.setAttributeNS(XMLConstants.XML_NS_URI, "xml:lang", "http://www.w3.org/XML/2000/10/xml.xsd");

答案 3 :(得分:0)

我有同样的问题。触摸屏幕上半部分的任何位置,都会导致模态关闭(放松)。改变了动画,世界又恢复了平静。

所以,绝对是iOS8中的一个错误。

答案 4 :(得分:0)

您需要找到要禁用该手势识别器的视图的超级视图,其中包含UIDismissCurlUpTapGestureRecognizer。对于我的案例中的exapmle:

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

▿可选>   ▿一些:2个元素      - [0] :; target =<(action = handleNavigationTransition:,target =< UINavigationInteractiveTransition 0x15826e2e0>)>>      - [1]:< UIDismissCurlUpTapGestureRecognizer :0x15838a2c0; state =可能; 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 中执行此操作非常重要,因为视图在加载周期的早期阶段并未了解其超级视图。

答案 5 :(得分:-3)

我也追了几天这个BUG!事实证明你仍然可以成功使用Partial Curl;只有在选中ANIMATES框时才会出现此问题。取消查看ANIMATES框,你就可以了!