iOS 9 Segue 导致应用冻结(没有崩溃或错误抛出)

iOS 9 Segue Causes App To Freeze (no crash or error thrown)

我已经在这个应用程序上工作了几个月,从我记事起,我就从来没有遇到过 segues 的问题。代码在调用 performSegueWithIdentifier 方面没有变化,但自从我最近更新 Xcode 7 和 iOS 9 以来,我一直无法解决这个问题。

我试过:

当我按下按钮时,没有在目标 VC 上调用任何初始加载函数(例如:ViewDidLoadViewWillAppear 等)。当我将它连接到一个空白视图时,segue 使用相同的代码可以正常工作。

由于代码永远不会停止或中断,而且似乎 "freeze" 就位,同时 运行 在 Xcode 上,我似乎无法将其缩小到什么导致问题。我有一个类似的 segue,它也是从同一个 ViewController 上的另一个按钮调用的,没有任何问题。

非常感谢对此事的任何想法!

编辑: 我已将问题缩小到导致问题的 UITextView。删除文本视图后,页面可以通过 segue 正常加载。我想知道 iOS 8 和 iOS 9 在 UITextView 之间发生了什么变化,因为我将不得不删除文本视图并完全重新添加新的文本视图。

基本上,由于我在 destinationViewController 中使用的 UITextView,所以 segue 被冻结了。以下解决了问题:

  • 删除所有UITextView
  • 添加新的 UITextView
    • 您必须保留默认的 lorem 强加文本并在 viewDidLoad()
    • 中以编程方式更改它

这是对我的修复,从我对这个问题所做的研究来看,这似乎是 iOS 9 和 Xcode 7 中的一个错误。

干杯!


注意: 删除 UITextView 中的文本(或使其超过 ~12 个字符)足以解决此问题,无需删除并重新创建它们。 这已在 Xcode 7.1.1 及更高版本中修复。

我 运行 遇到了同样的问题,这个 post (Xcode 7 crash: [NSLocalizableString length] 30000) 中的修复为我解决了这个问题。

首先是启用故事板基础以外的本地化(参见 )

二是关闭基地本地化(见)

我想我遇到了同样的问题:我有一个 UITabelView,其中包含从 nib 文件创建的单元格,当用户点击一个单元格时,将调用此方法:

当我使用以下方法 prepareForSegue:: 时,应用程序崩溃:

如果我删除第 129 行,一切正常,方法 prepareForSegue:: 打开右视图,标签 contactName 将显示其默认文本。 如果我按如下方式修改方法 prepareForSegue:: 得到你期望的结果,没有任何类型的错误:

如果您也得到相同的结果,请告诉我

遇到此问题的任何人,我通过关闭模拟器 window 调试中的 "Optimize rendering for windows scale" 选项解决了这个问题。我已经尝试了以上所有答案,但无法解决问题。

在第一个 viewController 激活 segue 的方法中,是否有 beginIgnoringInteractionEvents?如果是这样,您进入的屏幕将被冻结,并且将忽略您描述的交互事件。如果是这种情况,您可以通过在 segue 方法之前添加 endIgnoringInteractionEvents 方法来解决此问题:

UIApplication.sharedApplication().endIgnoringInteractionEvents() self.performSegueWithIdentifier("editItemToMyGearSegue", 发件人:自己)

我意识到这是一个老话题,但似乎仍然相关。我在 Xcode 9,iOS11 中遇到了同样的问题。我的 UITextViews 嵌入在 UITableViewCells 中。与此处描述的症状相同。默认文本和占位符的技巧对我没有任何帮助,但我通过关闭 xib 中文本视图的滚动指示器解决了这个问题。我猜它们是默认打开的,虽然未使用。

编辑:这可能是一个重要的细节……挂起的视图在文本视图的属性字符串中都有一个图像 NSTextAttachment。我认为图像比可用的 table 单元格内容更宽。关闭滚动后,它们似乎缩小了。