0

我有一个iPad应用程序,其中resignFirstResponder似乎不工作。 我已经尝试了很多解决方案。我只是从firstResponder对象的实例中调用第一响应者,但键盘仍然保留在屏幕上。我试着迭代所有的窗口来获得第一个响应者的实例,然后我从那个实例调用resignFirstResponder。resignFirstResponder不隐藏iPad中的UIkeyboard

我也尝试通过为以下方法创建UIViewController的类别。

- (BOOL)disablesAutomaticKeyboardDismissal 
    { 
     return NO; 
    } 

但是,这种解决方案也不适合我。这个键盘问题在所有的应用文本字段中都存在,不仅适用于某些特定的文本字段。

更新: 在应用程序的不同部分,我为此使用不同的代码。下面是代码

- (void)textFieldDidEndEditing:(UITextField *)mtextField 
{ 
[mtextField resignFirstResponder]; this one is not required but I have just write it here. 
} 

- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
if([string hasSuffix:@"\n"]) 
{ 
    [theTextField resignFirstResponder]; 
    return NO; 
} 
return YES; 
} 

更新:当我试图通过运行在模拟器中的应用,有时它resignFirstResponder甚至在模拟器的工作,但不能在每次启动。

+0

很难猜出发生了什么,却没有看到源代码。你有没有试过在视图控制器的顶层视图上调用'endEditing'? – 2012-08-01 11:31:25

+0

我已经试过viewcontroller的视图属性endEditing。 – vikas 2012-08-01 13:03:19

+0

如果你想让键盘退出,不应该'disablesAutomaticKeyboardDismissal'返回NO? – 2012-08-01 16:58:40

回答

0

我得到了这个问题的解决方案。其实苹果可可API似乎有些变化。在我的应用程序中,我有一个UIAlertView,我们用它来显示一些操作正在进行,用户应该等待完成它。为此目的,我在我的应用程序使用的代码是

- (void)displayAlertView 
    { 
    UIAlertView *alertView = creating the object; 
    UIActivityIndicatorView *activityIndicator= creating the object; 
    [alertView addSubview:activityIndicator]; 
    [activityIndicator startAnimating]; 
    [alertView show]; 
    [alertView release]; 
    } 

-(void)didPresentAlertView:(UIAlertView *)alertView 
{ 
     [alertView dismissWithClickedButtonIndex:0 animated:NO]; 
} 

当我用下面的代码在我的应用

-(void)didPresentAlertView:(UIAlertView *)alertView 
{ 
     [self performSelector:@selector(dismissView:) withObject:alertView afterDelay:0.0]; 

} 

    -(void)dismissView:(UIAlertView*)alertView 
{ 
     [alertView dismissWithClickedButtonIndex:0 animated:NO]; 
} 

我觉得这里的UIAlertView一些事情是怎么了?这个问题得到解决,并且因为该键盘在作为第一响应者辞职时不隐藏。

0

首先,您不要在Objective-C中调用方法,而是将消息发送给对象。

UIView是不是谁应该发送消息resignFirstResponder。将UITextField作为属性 - 我们称之为myTextField。你应该使用这个:

[self.myTextField resignFirstResponder]; 
+0

如果我将发送消息或只是调用客观的C方法,它会产生任何差异。我也尝试过通过财产调用它。 – vikas 2012-08-01 11:41:25

+0

这不是关于创造差异。我只是在谈论语言是如何工作的。你(我也做了很多)调用“调用方法”实际上是发送消息。对不起,我的回答没有帮助 – 2012-08-01 12:01:37

+0

好的,谢谢你的帮助。 – vikas 2012-08-01 12:08:30

5

最简单,最好的方式来隐藏键盘是使用

[self.view endEditing:YES]; 

,并确保您设置文本框

+3

它试过这种方式,但它不工作,键盘仍然在屏幕上。 – vikas 2012-08-01 13:00:33

+1

是你的领域在笔尖内的单独视图?如果是这样,请调用'[thatViewOutlet endEditing:YES];' – tGilani 2012-08-02 04:34:55

1

的适当代表如果你想当您按下回车键时键盘会退出,您需要使用:

- (BOOL)textFieldShouldReturn:(UITextField *)textField 

{ 
[textField resignFirstResponder]; 
return YES; 
} 

然后调用textFieldDidEndEditing。

相关问题