2009-05-05 71 views
20

我在iphone应用程序中有一个文本输入框,当您在模拟器中触摸它时,弹出键盘。但是没有办法摆脱它。 其他网页提供的解决方案,没有解释他们为什么应该工作,并且他们不适合我。 一个说让文本框的委托您的uiview然后调用resignfirstresponder对象,但它永远不会被调用。 有什么建议吗?任何人都可以解释实际发生的事情吗?如果我知道设计范例是什么,我可以自己弄清楚...如何使键盘在iPhone模拟器中消失

也许我应该只是放一个“去”按钮,所以我有一些东西让焦点远离文本字段?

回答

19

一种方式做到这一点是设置一个对象作为代表到文本字段,并落实

- (BOOL)textFieldShouldReturn:(UITextField *)textField 

在你打电话[textField resignFirstResponder]

这将导致键盘的时候,他们推到消失返回/去/完成按钮(无论您设置右下角的键盘键)。

有关更多信息,请参阅UITextFieldDelegate参考。

+1

当第一次开始了,我发现[“您的第一个iOS应用程序“教程](http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhone101/Articles/00_Introduction.html)是有帮助的。有关此答案的更多信息,请参见[“实现视图控制器”]中的“文本字段的委托”小节(http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhone101/文章/ 06_ImplementingController.html)。 – sage 2010-12-29 04:16:14

+1

够简单,但为什么这不是默认行为?尽管如此,这个工程实现了上面的接口,并将IB中的'委托'连接连接到文件的所有者。 – Bobby 2011-09-01 22:16:50

5

- (BOOL)textFieldShouldReturn:(UITextField *)textField在按下返回按钮时调用委托。

您想拨打[textField resignFirstResponder],然后返回YES。这应该够了吧。还要确保代表已设置。如果有疑问,请添加一个断点或NSLog并进行验证。

16

要解雇键盘,您可以使用TextField委托。

要使用此步骤,请按照下列步骤操作...
1.在您的viewController中。 h添加这样的委托声明:

@interface ViewController : UIViewController <UITextFieldDelegate> { 
    }
2.在你的viewController。 调用此方法:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
3.然后写这样的代码:
- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES; 
    }
4.最后一步是设置TextField的委托:
- (void)viewDidLoad { 
     [super viewDidLoad]; 
     self.textField.delegate = self; 
    }