首页 文章

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

提问于
浏览
14

我有一个聊天应用程序实现了一个浮动文本输入字段(类似于iOS消息应用程序)作为 ChatViewControllerinputAccessoryView (参见Apple's documentation) .

class ChatViewController: UIViewController {

    override var inputAccessoryView: UIView? {
       return chatInputView
    }

    override var canBecomeFirstResponder: Bool {
        return true
    }
    ...

我的 ChatViewController 有一个 ChatTableViewController 子视图控制器,它的单元格包含 UITextField ,其文本内容是可编辑的 . 问题是_2443220_的 UITextFieldinputAccessoryViewUITextView 拒绝重新签署第一响应者状态,这会阻止编辑 UITableViewCell 中的内容 . 控制台中记录以下警告:

First responder warning: '<UITextView: 0x7fc041041c00; 
 frame = ...' rejected resignFirstResponder when being removed from hierarchy

我试过直接在 UIInputViewUITextView 上调用 resignFirstResponderendEditing 但没有成功 . 我不希望 ChatViewController 重新签署第一响应者状态,因为这会导致 inputAccessoryView 消失 .

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

1 回答

  • 1

    请你检查一下:

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

    • 是否从视图层次结构中删除了 UITextView

    • 如果是这样的话,你可以在从超级视图中删除之前使用 resignFirstResponder .

    如果正在使用UITextView子类:

    • 您是否正在使用 UITextView 的子类,如果是这样,您实现了 canResignFirstResponder 以返回 false .

    • 您可以尝试返回 true .

相关问题