0

我有一个 iPad 应用程序,其中 resignFirstResponder 似乎没有工作。我尝试了很多解决方案。我只是从 firstResponder 对象的实例调用 resign first responder,但键盘仍保留在屏幕上。然后我尝试通过迭代所有窗口来获取第一响应者的实例,然后我从该实例调用 resignFirstResponder。

我还尝试通过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可以工作,但即使在模拟器中也不是每次启动。

4

4 回答 4

5

隐藏键盘的最简单和最好的方法是使用

[self.view endEditing:YES];

并确保您正在设置适当的文本字段代表

于 2012-08-01T11:52:47.210 回答
1

如果你想让键盘在你按下回车键的时候退出,你需要使用:

- (BOOL)textFieldShouldReturn:(UITextField *)textField

{
[textField resignFirstResponder];  
return YES;
}

然后调用 textFieldDidEndEditing。

于 2012-08-01T13:21:00.263 回答
0

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

UIView不是应该发送消息的人resignFirstResponder。拥有你UITextField的属性 - 我们称它为 myTextField。你应该使用这个:

[self.myTextField resignFirstResponder];
于 2012-08-01T11:32:40.457 回答
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,因为当辞去第一响应者的职务时,键盘没有隐藏。

于 2012-08-06T04:22:46.883 回答