按返回键如何在swift中隐藏键盘?

 後誨A沩鉨乄菰単 发布于 2023-01-09 16:15

UITextfied在点击文本键盘时使用,但是当我按下return键时,键盘没有消失.我使用了以下代码:

func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
    return true;
}

resignfirstresponder方法没有进入功能.

12 个回答
  • 您可以使用以下功能使应用程序关闭键盘

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        self.view.endEditing(true)
        return false
    }
    

    这是一个完整的例子来更好地说明:

    //
    //  ViewController.swift
    //
    //
    
    import UIKit
    
    class ViewController: UIViewController, UITextFieldDelegate {
    
        @IBOutlet var myTextField : UITextField
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
    
            self.myTextField.delegate = self
        }
    
        func textFieldShouldReturn(_ textField: UITextField) -> Bool {
            self.view.endEditing(true)
            return false
        }
    }
    

    代码来源:http://www.snip2code.com/Snippet/85930/swift-delegate-sample

    2023-01-09 16:16 回答
  • return true部分只告诉文本字段是否允许返回.
    你必须手动告诉文本字段解除键盘(或者它的第一个响应者是什么),这样就完成了resignFirstResponder(),如下所示:

    // Called on 'Return' pressed. Return false to ignore.
    
    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
        textField.resignFirstResponder()
        return true
    }
    

    2023-01-09 16:16 回答
  • Swift 4.2 - 无需代表

    您可以从UITextField为" 触发的主要操作 " 创建一个操作插座,并在传入的sender参数上重新签名第一个响应者:

    创建动作插座

    @IBAction func done(_ sender: UITextField) {
        sender.resignFirstResponder()
    }
    

    超级简单.

    (感谢斯科特史密斯的60秒视频,让我知道这件事:https://youtu.be/v6GrnVQy7iA)

    2023-01-09 16:16 回答
  • Simple Swift 3解决方案:将此功能添加到具有文本字段的视图控制器中:

    @IBAction func textField(_ sender: AnyObject) {
        self.view.endEditing(true);
    }
    

    然后打开助理编辑器,确保您的Main.storyboard位于视图的一侧,并且所需的视图controller.swift文件位于另一侧.单击文本字段,然后从右侧实用程序面板"显示连接检查器"选项卡中进行选择.控制从"退出时结束"拖动到swift文件中的上述功能.对该场景中的任何其他文本字段重复并链接到同一个功能.

    2023-01-09 16:16 回答
  • @RSC

    对我来说,Xcode版本6.2(6C86e)中的关键添加是在 override func viewDidLoad()

     self.input.delegate = self;
    

    尝试使用返回键几个小时,直到我找到你的帖子,RSC.谢谢!

    此外,如果您想触摸屏幕上的任何其他位置,请隐藏键盘:

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { self.view.endEditing(true); }

    2023-01-09 16:16 回答
  • 另一种方法是主要使用故事板并轻松地允许您拥有多个文本字段:

    @IBAction func resignKeyboard(sender: AnyObject) {
        sender.resignFirstResponder()
    }
    

    Did End On Exit每个字段的事件中,将该视图控制器的所有文本字段连接到该操作.

    2023-01-09 16:17 回答
  • 添加UITextFieldDelegate到类声明:

    class ViewController: UIViewController, UITextFieldDelegate
    

    textfield编程方式连接或写入

    @IBOutlet weak var userText: UITextField!
    

    将视图控制器设置为视图中的委托文本字段加载:

    override func viewDidLoad() {
    super.viewDidLoad()
    self.userText.delegate = self
    }
    

    添加以下功能

    func textFieldShouldReturn(userText: UITextField!) -> Bool {
        userText.resignFirstResponder()
        return true;
    }
    

    所有这一切,您的键盘将通过触摸文本字段以及按返回键开始解除.

    2023-01-09 16:17 回答
  • 要获得自动键盘解雇,我将此代码放在我的自定义文本字段类的一个方法中:

    textField.addTarget(nil, action:"firstResponderAction:", forControlEvents:.EditingDidEndOnExit)
    

    替换你的出口名称textField.

    2023-01-09 16:17 回答
  • 斯威夫特3

    将以下代码添加到VC中

    //hide keyboard when user tapps on return key on the keyboard
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        self.view.endEditing(true);
        return false;
    }
    

    适合我

    2023-01-09 16:19 回答
  • 当用户点击文本键盘上的"完成"按钮时,将生成"结束时退出"事件; 那时,我们需要告诉文本字段放弃控制,这样键盘就会消失.为此,我们需要向控制器类添加一个动作方法.选择ViewController.swift添加以下操作方法:

    @IBAction func textFieldDoneEditing(sender: UITextField) {
    sender.resignFirstResponder()}
    

    在Project Navigator中选择Main.storyboard,然后打开连接检查器.从"结束时退出"旁边的圆圈拖动到故事板中的黄色"视图控制器"图标,然后松开.将出现一个小弹出菜单,其中包含我们刚刚添加的单个操作的名称.单击textFieldDoneEditing操作以选择它,就是这样.

    2023-01-09 16:19 回答
  • 这是和平型评论的Swift 3.0更新:

    textField.addTarget(nil, action:Selector(("firstResponderAction:")), for:.editingDidEndOnExit)
    

    2023-01-09 16:19 回答
  • 我想从RSC初始化类:

    import Foundation
    import UIKit
    
    // Don't forget the delegate!
    class ViewController: UIViewController, UITextFieldDelegate {
    
    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    @IBOutlet var myTextField : UITextField?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    
        self.myTextField.delegate = self;
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func textFieldShouldReturn(textField: UITextField!) -> Bool {
        self.view.endEditing(true);
        return false;
    }
    

    }

    2023-01-09 16:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有