Iphone 当我只需触摸UITextField以外的任何地方时,我如何关闭键盘?
你好 我的应用程序中有两个UITextFields,当我只需触摸UITextFields以外的任何地方时,我想关闭键盘Iphone 当我只需触摸UITextField以外的任何地方时,我如何关闭键盘?,iphone,keyboard,uitextfield,numeric-keypad,Iphone,Keyboard,Uitextfield,Numeric Keypad,你好 我的应用程序中有两个UITextFields,当我只需触摸UITextFields以外的任何地方时,我想关闭键盘 如何执行此操作?在视图控制器中保留对UITextField的引用并调用[yourTextField resignFirstResponder]您需要在后台创建一个自定义按钮,然后将其连接到调用UITextField上的resignFirstResponder的方法 像这样的 编辑: 由于您希望以编程方式添加按钮,因此可以使用此代码 - (void)viewDidLoad {
如何执行此操作?在视图控制器中保留对UITextField的引用并调用[yourTextField resignFirstResponder]您需要在后台创建一个自定义按钮,然后将其连接到调用
UITextField上的resignFirstResponder
的方法
像这样的
编辑:
由于您希望以编程方式添加按钮,因此可以使用此代码
- (void)viewDidLoad
{
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
button.buttonType = UIButtonTypeCustom;
[button addTarget:self action:(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
[button release];
然后在此之后添加控制器代码。创建一个不可见的按钮,将其放在UITextField
后面,并在点击按钮时向文本字段发送辞职FirstResponder
消息。使用委托
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
您还可以在控制器中创建方法
-(IBAction)editingEnded:(id)sender{
[sender resignFirstResponder];
}
然后在IB connect事件中的in Connection Inspector中“在退出时结束”。为此,请使用tochesBegin方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[yourFirstTextField resignFirstResponder];
[yourSecondTextField resignFirstResponder];
}
您不需要其他任何东西。当您触摸视图上的任何位置时,文本字段和文本字段都不需要知道哪个有焦点。当您触摸文本字段时,文本字段自己打开键盘。如果您不使用Interface builder,您可以手动连接事件,如下所述:
如果您使用的是Interface builder,则不需要创建背景按钮
您可以这样做:
选择您的视图(可能称为视图)
更改为属性检查器中的(i)选项卡
将类从UIView更改为UIControl(这使您可以访问触摸事件)
将触地事件挂接到backgroundTap方法(Ctrl+拖动)
不要忘记保存更改
答案是好的。但我认为你也应该尝试:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}
用这个
- (void) animateTextField: (UITextField*) textField up: (BOOL) up
{
const int movementDistance = 180; distace of keyboard up.
const float movementDuration = 0.3f;
int movement = (up ? -movementDistance : movementDistance);
[UIView beginAnimations: @"anim" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: movementDuration];
self.view.frame = CGRectOffset(self.view.frame, 0, movement);
[UIView commitAnimations];
}
通常在这种情况下,您将有一个滚动视图来保存用户界面的其余部分。如果将该滚动视图的委托分配给视图控制器,并说您实现了协议UIScrollViewDelegate
,则只需添加以下方法即可:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[self.view endEditing:YES];
}
参考是什么意思,我如何编码,请再解释一点我的意思是只要有一个到UITextField的IBOutlet,然后在任何其他地方触摸时,调用[yourTextField resignFirstResponder],并使透明按钮覆盖整个视图,我正在创建一个类似这样的方法,但是现在除了我的文本字段之外,在任何地方单击时如何调用它?(void)backgroundTap{[self.restaurant_name_textfield resignFirstResponder];[self.amount_textfield resignFirstResponder];]我所有的编码都是手动的,不是基于界面生成器的,那么我怎么能简单地调用一个方法呢,你能告诉我吗?我所有的编码都是手动的,不是基于界面生成器的,那么我怎么能简单地调用一个方法呢,你能告诉我吗?添加一个轻触手势,它工作得很好,我已经接受了你的答案,Thanx:-)我还添加了“[超级触摸开始:触摸事件:事件];“以防万一。谢谢,我不知道为什么辞职FirstResponder对我不起作用。这是一种享受。@Deco您在Interface Builder中将您的响应者与正确的IBOutlet链接了吗?
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[self.view endEditing:YES];
}