退出触摸键盘
问题描述:
我发现了一些代码,可以帮助我在用户从UITextView元素触摸屏幕时退出键盘。退出触摸键盘
下面是它的外观:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
if([self.speechBubble.speechText isFirstResponder] && [touch view] != self.speechBubble.speechText){
[self.speechBubble.speechText resignFirstResponder];
}
[super touchesBegan:touches withEvent:event];
}
这工作完全,到目前为止,如果用户在文本视图之外的任何地方倒是会卸下键盘。但是,它只适用于我正在运行它的特定对象,所以如果我有两个speechBubbles,它将不起作用。
如何更改此设置以使任何speechBubble具有相同的效果? (我可以将这段代码从我的ViewController移动到我的SpeechBubble类,但是如何使用[touch view]触及speechBubble的视图之外的某个小问题。)谢谢
答
我刚刚发现的东西可能使用你的是:
[self.view endEditing:YES];
将辞职第一响应从您无需手动跟踪它自己当前拥有的任何元素。
关于你的示例代码,这样的事情可能会奏效,取决于你的speechBubbles是如何工作的:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
// Note the '!':
if(![[touch view] class] isKindOfClass [speechBubble class]]){
// It's not a bubble they touched, dismiss the keyboard:
[self.view endEditing:YES];
}
[super touchesBegan:touches withEvent:event];
}
好极了,endEditing是伟大的。我正在考虑尝试使用isKindOfClass,但不知道你可以像这样访问[touch view]类。谢谢 – user339946 2012-02-05 20:40:03