我有UITextView
。我实施了一个navigationBar UIBarButtonItem
来响应触摸并辞退我的UITextView
的第一个应答器。
但是,当调用选择器方法时,键盘不会被解除。我用isFirstResponder
检查了UITextView的响应者状态,然后返回YES。我还用canResignFirstResponder
检查了它,返回值为NO。
我必须在这里遗漏一些东西......为什么它会返回NO?
我知道我可以通过继承UITextView来覆盖canResignFirstResponder
,但是如果可能的话我想避免这种情况。
以下是代码段:
- (void) commentCancelButtonTouched:(id)sender
{
NSLog(@"Cancel button touched");
[self.navigationBar popNavigationItemAnimated: NO];
if ([self.textInput.textView canResignFirstResponder] == NO) {
NSLog(@"I don't want to resign!");
}
[self.textInput.textView resignFirstResponder];
}
答案 0 :(得分:5)
万一有人想要在文本视图外触摸时隐藏键盘,这很容易......
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
[self.xFront resignFirstResponder];
}
xFront是我UITextView
的出口。
答案 1 :(得分:3)
通过UIView子类寻址您的UITextField有点不标准。如果我是你,我会直接从视图控制器内部直接处理UITextField。将其设置为视图控制器的综合属性,为其提供关键字IBOutlet,以便您可以在Interface Builder中进行讨论,然后确保将插座连接到文本字段。
换句话说,您不想谈论self.textInput.textView
,而是直接谈论self.textView
。并仔细检查你的IB插座连接,因为我怀疑这是真正的麻烦所在。
答案 2 :(得分:1)
我明白了。我的'textInput'视图中有一个'UITextViewDelegate'方法,textViewShouldEndEditing
被覆盖以返回NO
。将其更改为YES
并解决了问题。