我创建了带警报视图的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");
}
答案 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)将不会出现。