2011-12-24 74 views
3

我学习iOS SDK使用this book和4章,当它告诉你如何隐藏数字键盘与背景轻拍我有一个问题。我这样做的作者说,但没有发生。我如何做到这一点? 什么书的作者说:如何使用背景隐藏数字键盘点击?

1)ViewController.h

- (IBAction)touchBackground:(id)sender; 

2创建新方法backgroundTap)在ViewController.m

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

3)查看更改对象的阶级身份加入方法在界面生成器(据我所知,在Xcode 4其控制)从UIView到UIControl

4)将事件列表中的TouchDown方法与File' s所有者和检查方法backgroundTap。

这是我的代码示例

附:我很抱歉我的英文,因为我有俄文翻译,所以我把所有的信息从这本书翻译成英文。

回答

5

我想你可能会只是实现的方法是这样为了简便:

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

使界面生成器后台视图UIControl,而不是UIView和事件挂钩接触到这个方法。

看看这个small example project。我在secondViewController中完成了这个操作,触摸背景使键盘无法工作。您还可以看到我是如何改变的背景为UIControl你可能想尝试secondViewController.xib

3

的东西,而不会改变的背景看来,是:

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

你可能已经完成第4步(“连接事件列表中的TouchDown方法与文件的所有者和检查方法backgroundTap“)不正确。在你的touchBackground方法中包含一个NSLog来检查方法是否被调用。

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

如果消息(“touchBackground被称为”)在控制台中显示不出来,那么你知道touchBackground不会被调用。