我有一个聊天应用程序实现了一个浮动文本输入字段(类似于iOS消息应用程序)作为 ChatViewController
的 inputAccessoryView
(参见Apple's documentation) .
class ChatViewController: UIViewController {
override var inputAccessoryView: UIView? {
return chatInputView
}
override var canBecomeFirstResponder: Bool {
return true
}
...
我的 ChatViewController
有一个 ChatTableViewController
子视图控制器,它的单元格包含 UITextField
,其文本内容是可编辑的 . 问题是_2443220_的 UITextField
, inputAccessoryView
的 UITextView
拒绝重新签署第一响应者状态,这会阻止编辑 UITableViewCell
中的内容 . 控制台中记录以下警告:
First responder warning: '<UITextView: 0x7fc041041c00;
frame = ...' rejected resignFirstResponder when being removed from hierarchy
我试过直接在 UIInputView
和 UITextView
上调用 resignFirstResponder
和 endEditing
但没有成功 . 我不希望 ChatViewController
重新签署第一响应者状态,因为这会导致 inputAccessoryView
消失 .
编辑:我也会在交互式解除键盘时收到警告(而不是点击 UITableViewCell
的 UITextField
.
1 回答
请你检查一下:
如果从超级视图中删除了UITextView:
是否从视图层次结构中删除了
UITextView
?如果是这样的话,你可以在从超级视图中删除之前使用
resignFirstResponder
.如果正在使用UITextView子类:
您是否正在使用
UITextView
的子类,如果是这样,您实现了canResignFirstResponder
以返回false
.您可以尝试返回
true
.