在iphone中隐藏键盘resignFirstResponder不工作

时间:2011-10-28 16:12:50

标签: iphone keyboard uitextfield hide uialertview

我创建了带警报视图的UITextField。在UITextField上输入后我想在用户点击“完成”按钮时隐藏键盘。

这是我的代码。当我运行它时,它正在命中hideKeyBoard方法(我发现使用NSLog和调试)。但是这段代码没有隐藏键盘。请帮我。

- (IBAction)doAlertInput:(id)sender
{
    UIAlertView *alertDialog;

    alertDialog = [[UIAlertView alloc] 
                   initWithTitle: @"Please Enter Your Email Address!" message:@"You won’t see me" 
                   delegate: self cancelButtonTitle: @"Ok" otherButtonTitles: nil];

    userInput=[[UITextField alloc] initWithFrame: CGRectMake(12.0, 70.0, 260.0, 25.0)];

    userInput.returnKeyType = UIReturnKeyDone;

    [userInput addTarget:self action:@selector(hideKeyBoard) forControlEvents:UIControlEventEditingDidEndOnExit];

    [userInput setBackgroundColor:[UIColor whiteColor]];

    [alertDialog addSubview:userInput];

    [alertDialog show];
    [alertDialog release];
}

-(void)hideKeyBoard
{
    [userInput resignFirstResponder];
    NSLog(@"Key Board Hid");
}

3 个答案:

答案 0 :(得分:3)

我认为你错过了UITextField的代表

  

userInput.delegate = self;

也实现协议,应该是它。欢呼声。

答案 1 :(得分:2)

在关键板上显示其覆盖警报视图后。所以我正在做的是将我的警报视图提高一点。然后它不会成为问题,因为键盘不再覆盖警报视图。

CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0.0, 130.0);
[myAlertView setTransform:myTransform];

CGAffineTransformMakeTranslation()的第一个参数是用于将视图原点移动到的X坐标。第二个参数是将视图原点移动到的Y位置。 130.0并未使状态栏和键盘之间的警报视图完全居中。

您需要在UIAlertView实例化和[UIAlertView show]行之间的某处添加这两行。我把它们直接放在展示线之前。

还要将CoreGraphics框架添加到您的项目中。

我认为这会对你有所帮助。谢谢:))

答案 2 :(得分:0)

您也可以使用此方法。

首先在.h文件中设置委托方法

UITextfieldDelegate 使用<>

然后在你的.m文件中。

- (BOOL)textFieldShouldReturn:(UITextField *)textField    {

  [textField resignFirstResponder];

  return YES;

}

确保不要忘记添加textfield delegate,否则方法 - (BOOL)将不会出现。