iOS 9 Segue 导致应用冻结(没有崩溃或错误抛出)
iOS 9 Segue Causes App To Freeze (no crash or error thrown)
我已经在这个应用程序上工作了几个月,从我记事起,我就从来没有遇到过 segues 的问题。代码在调用 performSegueWithIdentifier
方面没有变化,但自从我最近更新 Xcode 7 和 iOS 9 以来,我一直无法解决这个问题。
我试过:
- 正在删除按钮并使用 segue 创建新按钮 link
- 使用从按钮直接 segue 到视图,不使用
performSegueWithIdentifier
- 将按钮连接到新空白viewController
当我按下按钮时,没有在目标 VC 上调用任何初始加载函数(例如:ViewDidLoad
、ViewWillAppear
等)。当我将它连接到一个空白视图时,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 单元格内容更宽。关闭滚动后,它们似乎缩小了。
我已经在这个应用程序上工作了几个月,从我记事起,我就从来没有遇到过 segues 的问题。代码在调用 performSegueWithIdentifier
方面没有变化,但自从我最近更新 Xcode 7 和 iOS 9 以来,我一直无法解决这个问题。
我试过:
- 正在删除按钮并使用 segue 创建新按钮 link
- 使用从按钮直接 segue 到视图,不使用
performSegueWithIdentifier
- 将按钮连接到新空白viewController
当我按下按钮时,没有在目标 VC 上调用任何初始加载函数(例如:ViewDidLoad
、ViewWillAppear
等)。当我将它连接到一个空白视图时,segue 使用相同的代码可以正常工作。
由于代码永远不会停止或中断,而且似乎 "freeze" 就位,同时 运行 在 Xcode 上,我似乎无法将其缩小到什么导致问题。我有一个类似的 segue,它也是从同一个 ViewController 上的另一个按钮调用的,没有任何问题。
非常感谢对此事的任何想法!
编辑: 我已将问题缩小到导致问题的 UITextView
。删除文本视图后,页面可以通过 segue 正常加载。我想知道 iOS 8 和 iOS 9 在 UITextView
之间发生了什么变化,因为我将不得不删除文本视图并完全重新添加新的文本视图。
基本上,由于我在 destinationViewController
中使用的 UITextView
,所以 segue 被冻结了。以下解决了问题:
- 删除所有
UITextView
的 - 添加新的 UITextView
- 您必须保留默认的 lorem 强加文本并在
viewDidLoad()
中以编程方式更改它
- 您必须保留默认的 lorem 强加文本并在
这是对我的修复,从我对这个问题所做的研究来看,这似乎是 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 单元格内容更宽。关闭滚动后,它们似乎缩小了。