自定义inputaccessoryView中的UITextView不会重新响应第一响应者状态

bla*_*lau 16 iphone ios swift

我有一个聊天应用程序实现浮动文本输入字段(类似于iOS消息应用程序)作为inputAccessoryView我的ChatViewController(请参阅Apple的文档).

class ChatViewController: UIViewController {

    override var inputAccessoryView: UIView? {
       return chatInputView
    }

    override var canBecomeFirstResponder: Bool {
        return true
    }
    ...
Run Code Online (Sandbox Code Playgroud)

ChatViewController有一个ChatTableViewController子视图控制器,它有包含UITextFields的单元格,其文本内容是可编辑的.我遇到的问题是,当用户点击一个单元格UITextField,在inputAccessoryViewUITextView拒绝辞职第一响应状态,以防止在内容UITableViewCell被编辑.控制台中记录以下警告:

 First responder warning: '<UITextView: 0x7fc041041c00; 
 frame = ...' rejected resignFirstResponder when being removed from hierarchy
Run Code Online (Sandbox Code Playgroud)

我已经打过电话resignFirstResponder,并endEditingUIInputViewUITextView直接,但没有成功.我不希望ChatViewController辞职第一响应者状态,因为这将导致inputAccessoryView消失.

编辑:我也会在交互式解除键盘时收到警告(而不是点击它UITableViewCellUITextField.

use*_*037 1

您能否检查以下内容:

如果UITextView从超级视图中删除:

  • 是否UITextView从视图层次结构中删除?
  • 如果是这样,您可以resignFirstResponder在将其从超级视图中删除之前。

如果UITextView正在使用子类:

  • 您是否使用 的子类UITextView,如果是,您是否实现了canResignFirstResponderreturn false
  • 您可以尝试返回true吗?