gpt4 book ai didi

ios - 将 UITextView 的 inputview 属性从自定义 View 更改为 nil 会导致崩溃

转载 作者:技术小花猫 更新时间:2023-10-29 11:23:08 36 4
gpt4 key购买 nike

我相信我在 iOS 7 中遇到了一个错误。当模态视图中包含 UITextView 时,将其 inputview 属性从自定义 View 更改为 nil(以便恢复系统键盘)将导致模态视图关闭后应用崩溃。

此崩溃仅在 iOS 7 下发生。以前的 iOS 版本没有出现此问题。

我写了一个小sample app来证明问题。编译启动应用程序并执行以下操作:

  1. 点击按钮“显示 TextView”。这将呈现一个模态包含一个 UITextView 和三个按钮的 ViewController。
  2. 点击按钮“将输入 View 设置为空 View ”。这将创建一个清空 UIView 并将其分配给的 inputview 属性UITextView。
  3. 点击按钮“将输入 View 设置为零”。这会将 nil 分配给UITextView 的 inputview 属性。这样做是为了显示系统键盘。
  4. 点击“关闭 ViewController”按钮。这将取消 View Controller 返回到原始 View Controller 。

一旦 ViewController 被关闭,应用程序就会立即崩溃。崩溃日志有时(但并非总是)是指将无法识别的选择器发送到对象。每次重现崩溃时,对象的类型都不同。

有没有其他人遇到过这种错误?

最佳答案

对不起,我不是很了解你。这是一个不会导致崩溃的解决方案。

UIView* emptyView;

-(IBAction)setToEmpty:(id)sender {
[self.textView resignFirstResponder];
if (emptyView == nil)
emptyView = [[UIView alloc] initWithFrame:CGRectZero];
self.textView.inputView = emptyView;
[self.textView becomeFirstResponder];
// emptyView = nil; // If you comment out the this line, the app will crash
}

如果启用僵尸对象,您会看到以下错误:

CrashTest[16706:a0b] * -[UIView _overrideInputViewNextResponderWithResponder:]: message sent to deallocated instance 0x8e88680

iOS7 中的 ARC 以不同的方式工作。显然,您不能在关闭 mainView 之前释放 firstResponder 对象。

关于ios - 将 UITextView 的 inputview 属性从自定义 View 更改为 nil 会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19913249/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com