Iphone 当我只需触摸UITextField以外的任何地方时,我如何关闭键盘?

Iphone 当我只需触摸UITextField以外的任何地方时,我如何关闭键盘?,iphone,keyboard,uitextfield,numeric-keypad,Iphone,Keyboard,Uitextfield,Numeric Keypad,你好 我的应用程序中有两个UITextFields,当我只需触摸UITextFields以外的任何地方时,我想关闭键盘 如何执行此操作?在视图控制器中保留对UITextField的引用并调用[yourTextField resignFirstResponder]您需要在后台创建一个自定义按钮,然后将其连接到调用UITextField上的resignFirstResponder的方法 像这样的 编辑: 由于您希望以编程方式添加按钮,因此可以使用此代码 - (void)viewDidLoad {

你好 我的应用程序中有两个UITextFields,当我只需触摸UITextFields以外的任何地方时,我想关闭键盘
如何执行此操作?

在视图控制器中保留对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];
    }