UIModalPresentationFormSheet 中的 UITextView 冻结应用程序 iOS 10
Posted
技术标签:
【中文标题】UIModalPresentationFormSheet 中的 UITextView 冻结应用程序 iOS 10【英文标题】:UITextView in UIModalPresentationFormSheet freezes app iOS 10 【发布时间】:2016-09-23 01:22:46 【问题描述】:我在视图控制器中有一个 UITextView,我使用模态表单显示它
vc.modalPresentationStyle = UIModalPresentationFormSheet;
[AppDelegate.rootController presentViewController:vc animated:YES completion:nil];
在 ios 9.3 之前一切都很好。然后是 iOS 10/10.0.1
这样,每次用户在文本字段内点击以调出键盘时,应用程序都会冻结。我不知道为什么。 我尝试将 UITextView 作为第一响应者。这可以很好地启动键盘,我可以在 VC 上键入并按下按钮来采取行动。 VC 和键盘都被解雇了。但同样,如果没有按下按钮,如果我尝试简单地关闭键盘,应用程序就会冻结。
任何人的任何想法?
【问题讨论】:
你有解决这个问题的办法吗?如果我覆盖 viewWillLayoutSubviews,我将面临同样的问题。 【参考方案1】:我将代码从 viewWillLayoutSubviews 移至 viewDidLayoutSubviews。它不再冻结。在我看来,这像是一个 iOS 10 错误。
override func viewDidLayoutSubviews()
super.viewDidLayoutSubviews()
self.view.superview!.bounds = CGRectMake(0,0, 500, 300)
【讨论】:
这是正确的解决方案。我们意识到由于某种原因 viewWillLayout 被连续调用,从而阻塞了任何其他应用程序操作【参考方案2】:今天早些时候正在经历类似的事情。 对我的修复如下(不确定为什么,iOS 10 中一定发生了一些变化)。
在旧代码中:
- (void)viewWillLayoutSubviews
self.view.superview.bounds = CGRectMake(0,self.view.superview.bounds.origin.y, 768, 256);
[super viewWillLayoutSubviews];
删除它解决了我的问题。
【讨论】:
您的代码是解决方案吗?我尝试了下面的代码,但仍然导致冻结: // THIS FUNCTION CAUSING FREEZE override func viewWillLayoutSubviews() self.view.superview!.bounds = CGRectMake(0,0, 500, 300) super.viewWillLayoutSubviews()以上是关于UIModalPresentationFormSheet 中的 UITextView 冻结应用程序 iOS 10的主要内容,如果未能解决你的问题,请参考以下文章