UITextView resignFirstResponder Crash on Back

Posted

技术标签:

【中文标题】UITextView resignFirstResponder Crash on Back【英文标题】: 【发布时间】:2014-05-16 16:50:09 【问题描述】:

我正在使用UITextView 在我的应用程序上创建一个表单,并在用户滚动它后面的UIScrollView 时将其退出。

代码:

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
    if ([self.messageBox canResignFirstResponder]) 
        [self.messageBox resignFirstResponder];
    

当我在文本视图中单击、编辑,然后通过滚动退出时,我单击 NavigationController 的“后退”按钮,然后应用程序崩溃:

[BugReportViewController scrollViewDidScroll:]: message sent to deallocated instance 0x157518390

知道如何解决这个问题吗?

【问题讨论】:

如果您没有在此控制器上执行任何操作,而只是点击返回按钮,您的应用程序是否会崩溃? @Stonz2 如果我继续在 textview 上尝试编辑某些内容,然后通过滚动退出(并调用 scrollViewWillBeginDragging)然后,当我点击返回按钮时会发生崩溃。任何其他操作都不会导致应用崩溃。 【参考方案1】:

在委托被释放后,滚动视图似乎正在向其委托发送消息。要解决此问题,请在拥有文本视图的视图控制器中覆盖 dealloc,并将滚动视图的 delegate 属性设置为 nil

【讨论】:

太棒了!非常感谢 :) 所以我加了-(void)dealloc [self.scroller setDelegate:nil];

以上是关于UITextView resignFirstResponder Crash on Back的主要内容,如果未能解决你的问题,请参考以下文章

UITextView 背景图像不适合 UITextView 框架的框架大小

当 UITextView 的文本超出 1 行时展开 UITextView 和 UITableView

选择另一个 UITextView 时,如何阻止 UITextView 退出第一响应者/关闭键盘?

从 UIView 中的 UITextView 复制文本后,UITextView 更改为 UIWebDocumentView?

UITextView 数据变化迅速

UITextView contentInset 在 iOS 7 上的 UITextView 中不起作用?