我使用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。对不起我的英语,我把书中的所有信息翻译成英文,因为我有俄语翻译。
答案 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。