当前位置: 首页 > 知识库问答 >
问题:

当用户点击文本字段外的其他区域时,如何关闭键盘?

通宾白
2023-03-14

今天我试着在iPod(iOS 6.1.3)上运行我的代码,我在这里发现了一些有趣的东西。。。

首先,当我点击textfield时,键盘会出现,但当我点击文本字段以外的其他地方时,键盘不会隐藏。

所以我决定谷歌搜索并找到这个解决方案

_fieldEmail.delegate = self;
_fieldEmail.returnKeyType = UIReturnKeyDone;

_fieldPassword.delegate = self;
_fieldPassword.returnKeyType = UIReturnKeyDone;

_fieldRegisterName.delegate = self;
_fieldRegisterName.returnKeyType = UIReturnKeyDone;

_fieldRegisterEmail.delegate = self;
_fieldRegisterEmail.returnKeyType = UIReturnKeyDone;

_fieldRegisterPassword.delegate = self;
_fieldRegisterPassword.returnKeyType = UIReturnKeyDone;

它工作了…它在键盘底部给出了一个“完成”按钮,现在可以通过按下它来隐藏键盘。

但我这里有2个问题:

    < li >键盘仅在点击"完成"按钮时隐藏。而不是通过点击文本字段之外的其他区域。我不知道这在iOS世界是否正常,但通常我看到很多应用程序不这样做。 < li >有没有什么方法可以循环这个过程,这样我就不必一个接一个地手动添加所有textfield的委托了?怎么做呢?

我只需要知道这些

共有3个答案

韦高阳
2023-03-14

这与 Xcode 6.0.1 的 Swift 编程有关

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    let tapRecognizer = UITapGestureRecognizer(target: self, action: "handleSingleTap:")
    tapRecognizer.numberOfTapsRequired = 1
    self.view.addGestureRecognizer(tapRecognizer)
}

func handleSingleTap(recognizer: UITapGestureRecognizer) {
    self.view.endEditing(true)
}
濮俊美
2023-03-14
  1. 只需在您的视图中添加一个 UITap 手势识别器,即可调用 resignFirst 回复器

查看负载 :

UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc] 
                                   initWithTarget:self
                                   action:@selector(hideKeyBoard)];

[self.view addGestureRecognizer:tapGesture];

然后:

-(void)hideKeyBoard {
       [yourTextField resignFirstResponder];
}

2.你可以子类化UITextField,但是除非你有1000个TextField,否则你可以像现在这样做。

洪逸清
2023-03-14

下面的代码将适用于所有UITextField的UIView中的所有组件。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    for (UIView * txt in self.view.subviews){
        if ([txt isKindOfClass:[UITextField class]] && [txt isFirstResponder]) {
            [txt resignFirstResponder];
        }
    }
}

或者

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.view endEditing:YES];    
}
 类似资料:
  • 本文向大家介绍vue 点击其他区域关闭自定义div操作,包括了vue 点击其他区域关闭自定义div操作的使用技巧和注意事项,需要的朋友参考一下 方法一: 在外层div添加事件 @click="closeSel" html method 方法二、element.addEventListener(event, function, useCapture) mounted中 注意此方法使用时 e和 $el

  • 我有一个片段,其中包含一个ViewPager2的2个fragemnt。在第二个子片段中,我有一个回收器视图,其视图保持器包含 TextView 和 EditText。 在模拟器中,当我点击编辑视图时,软键盘一直关闭。 在真实设备(索尼xperia XA)中,软键盘没有关闭,但它总是关注第一个编辑文本,无论我是否在另一个编辑文本中单击 我曾尝试使用android:WindowsOfInputMode

  • 我在这方面工作了4个多小时,无法通过。我试图做的是在输入焦点区域外敲击时隐藏键盘。不知何故,键盘无法隐藏。 我尝试了StackOverflow上所有可能的答案,但无法找到解决方案。 如果有人指导我解决这个问题,那就太好了。

  • 下面是我的代码:(它非常混乱,我只是在收集我的想法。我有一个更正式的程序,它要大得多,我将在稍后实现它) 当我选择A-E时,我会弹出一个带有“选择”或“取消”的对话框。我不希望原来的框架关闭。

  • 本文向大家介绍如何放大点击的区域?相关面试题,主要包含被问及如何放大点击的区域?时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 当用户单击下拉菜单之外的任何地方时,我想关闭我的登录菜单下拉菜单,我想使用Angular2和Angular2“方法”来完成此操作… 我已经实现了一个解决方案,但是我对此确实没有信心。我认为必须有一种最简单的方法来达到相同的结果,因此,如果您有任何想法…让我们讨论一下:)! 这是我的实现: 下拉组件: 这是我的下拉菜单的组成部分: 每次将此组件设置为可见时,(例如:当用户单击按钮以显示它