gpt4 book ai didi

iOS: "Message sent to deallocated instance"当在 UITextView 上显示其自动更正弹出窗口时退出第一响应者

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:24:27 27 4
gpt4 key购买 nike

我有一个带有“完成”按钮的自定义工具栏,用于我的 TextView 的输入辅助 View 。当点击这个“完成”按钮时,我想从第一响应者那里退出 TextView ,所以我调用:

[textView resignFirstResponder];

这会抛出一个错误:

Thread 1: Program received signal: "EXC_BAD_ACCESS".

当显示自动更正时点击“完成”按钮(见下图)。即使我打电话,错误仍然存​​在:

if ([textView isFirstResponder] && [textView canResignFirstResponder]) [textView resignFirstResponder];

好像text view是first responder,可以辞职但是我不能辞职。我该如何解决这个错误?谢谢。

编辑 1:我仍然想启用自动更正。

编辑 2:请看下面的捕获图像。

auto correction is shown

编辑 3:在方案设置中打开 Zombies 后,记录的消息是:

-[TIZephyrCandidate wordOriginFeedbackID]: message sent to deallocated instance 0x52bbc50

但我不知道这条信息是什么意思,下一步该做什么。

编辑 4:当点击“完成”按钮时,将调用退出第一响应者的方法,该按钮是通过以下代码行添加的目标和操作:

[doneButton addTarget:self action:@selector(resignAllFirstResponders) forControlEvents:UIControlEventTouchUpInside];

resignAllFirstResponders 是:

- (void)resignAllFirstResponders
{
...

if ([textView canResignFirstResponder] && [textView isFirstResponder])
[textView resignFirstResponder];

...
}

最佳答案

如果你使用:

- (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString *)aText 

UITextViewDelegate 并直接更改方法中的文本,例如:

- (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString *)aText
{
aTextView.text = @"hi";

return YES;
}

导致崩溃。

  1. 出现了拼写检查 View ,
  2. UITextView 的 resignFirstResponder,
  3. 直接更改文本 textView:shouldChangeTextInRange:replacementText delegate,

应用会崩溃。

关于iOS: "Message sent to deallocated instance"当在 UITextView 上显示其自动更正弹出窗口时退出第一响应者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8488932/

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