如何使用背景隐藏数字键盘?

时间:2011-12-24 18:36:00

标签: ios xcode numpad

我使用this book学习iOS SDK,在4章中,当它告诉你如何用背景音标隐藏数字键盘时我遇到了问题。我这样做的作者说,但什么也没发生。我怎么能这样做?  什么书的作者说:

1)在ViewController.h中创建新方法backgroundTap

- (IBAction)touchBackground:(id)sender;

2)在ViewController.m中添加方法

-(void)touchBackground:(id)sender{
[nameField resignFirstResponder];
[numberField resignFirstResponder];}

3)在Interface Builder中更改View对象的类标识(我在Xcode 4中了解它的控件)从UIView到UIControl

4)将事件列表中的TouchDown方法与文件所有者连接,并检查方法backgroundTap。

这是我的代码示例

P.S。对不起我的英语,我把书中的所有信息翻译成英文,因为我有俄语翻译。

3 个答案:

答案 0 :(得分:5)

我认为你可以通过实现这样的方法来简化这个:

- (IBAction)backgroundTouched:(id)sender {
    [self.view endEditing:YES];
}

在界面构建器中创建后台视图UIControl而不是UIView,并将触摸事件挂钩到此方法。

看看这个small example project。我已经在secondViewController中完成了这一点,触摸背景时解除了键盘。您还可以查看我如何将背景更改为UIControl

中的secondViewController.xib

答案 1 :(得分:3)

您可能想要尝试而不改变背景视图的是:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [nameField resignFirstResponder];
    [numberField resignFirstResponder];
}

答案 2 :(得分:1)

您可能已错误地执行了步骤4(“将事件列表中的TouchDown方法与文件所有者联系并检查方法backgroundTap”)。在touchBackground方法中包含一个NSLog,以检查是否正在调用该方法。

-(void)touchBackground:(id)sender{
[nameField resignFirstResponder];
[numberField resignFirstResponder];
NSLog(@"touchBackground was called");
}

如果消息(“touchBackground被调用”)没有显示在你的控制台中,那么你知道没有调用touchBackground。