退出触摸键盘

问题描述:

我发现了一些代码,可以帮助我在用户从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]; 
} 
+0

好极了,endEditing是伟大的。我正在考虑尝试使用isKindOfClass,但不知道你可以像这样访问[touch view]类。谢谢 – user339946 2012-02-05 20:40:03