ios 用swift编程语言隐藏文本字段的键盘

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/24908966/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 01:30:33  来源:igfitidea点击:

hide keyboard for text field in swift programming language

iosswiftuitextfield

提问by Ravi_Parmar

I have little experience in Objective-C. I want to hide the keyboard for a text field using the Swift programming language.

我在Objective-C方面的经验很少。我想使用 Swift 编程语言隐藏文本字段的键盘。

I also tried this

我也试过这个

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

But the method is not getting triggered when I hit return. Anyone have any luck with this?

但是当我点击返回时,该方法没有被触发。有没有人有这方面的运气?

回答by Ravi_Parmar

I think the Problem is with setting the Delegate.

我认为问题在于设置委托。

Please set textfield Delegate to your ViewController like this

请像这样将 textfield Delegate 设置为您的 ViewController

class ViewController: UIViewController,UITextFieldDelegate {

and then create the IBOutlet for your text field like this

然后像这样为您的文本字段创建 IBOutlet

@IBOutlet var txtTest : UITextField = nil

make sure that it is connected to your text field on your view in storyboard.

确保它已连接到情节提要中视图上的文本字段。

finally set its Delegate using

最后设置其委托使用

txtTest.delegate=self

We are almost done. Now place this delegate function into your class.

我们快完成了。现在将此委托函数放入您的类中。

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

Hope this will solve your issue.

希望这能解决您的问题。

回答by matiasdim

Just override the UIViewController method called "touchesBegan" and set endEditing to true. Just like this:

只需覆盖名为“touchesBegan”的 UIViewController 方法并将 endEditing 设置为 true。像这样:

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

回答by Ronaldoh1

In order to hide the keyboard when you pressed a button, you need to use the following function.

为了在按下按钮时隐藏键盘,您需要使用以下功能。

self.view.endEditing(true)

This works when a button is pressed.

这在按下按钮时起作用。

Hope this helps someone out there.

希望这可以帮助那里的人。

回答by LAOMUSIC ARTS

Here we go:

开始了:

  1. Add a textField to your View
  2. Create a new Swift file
  3. Set this new file as a Class for that particular View
  4. Add a TextField to your View
  5. Create an Outlet for the textfield (my is named "txtField" !)
  6. Substitute any code in the Swift Class file with this:

    import Foundation
    import UIKit
    
    //01 create delegation
    class MyViewController2: UIViewController,UITextFieldDelegate {
    
      @IBOutlet weak var txtField: UITextField!=nil
    
        override func viewDidLoad() {
          super.viewDidLoad()
          // additional setup after loading the view
    
          //02 set delegate to textfield
          txtField.delegate = self
        }
    
        //03 textfield func for the return key
        func textFieldShouldReturn(textField: UITextField) -> Bool {
          txtField.resignFirstResponder()
          return true;
        }
    
        //textfield func for the touch on BG
        override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
          txtField.resignFirstResponder()
          self.view.endEditing(true)
        }
    
        override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          //dispose of any resources that can be recreated
        }
      }
    
    1. Try it out, be happy & say thanks !
  1. 将 textField 添加到您的视图
  2. 创建一个新的 Swift 文件
  3. 将此新文件设置为该特定视图的类
  4. 将 TextField 添加到您的视图
  5. 为文本字段创建一个出口(我的名为“txtField”!)
  6. 将 Swift 类文件中的任何代码替换为:

    import Foundation
    import UIKit
    
    //01 create delegation
    class MyViewController2: UIViewController,UITextFieldDelegate {
    
      @IBOutlet weak var txtField: UITextField!=nil
    
        override func viewDidLoad() {
          super.viewDidLoad()
          // additional setup after loading the view
    
          //02 set delegate to textfield
          txtField.delegate = self
        }
    
        //03 textfield func for the return key
        func textFieldShouldReturn(textField: UITextField) -> Bool {
          txtField.resignFirstResponder()
          return true;
        }
    
        //textfield func for the touch on BG
        override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
          txtField.resignFirstResponder()
          self.view.endEditing(true)
        }
    
        override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          //dispose of any resources that can be recreated
        }
      }
    
    1. 试试看,开心并说声谢谢!

回答by Anup Gupta

Now In Swift 3/4/5, the easiest methods are

现在在 Swift 3/4/5 中,最简单的方法是

Method 1:called when 'return' key pressed.

方法 1:按下 'return' 键时调用。

func textFieldShouldReturn(_ textField: UITextField) -> Bool 
 {
 textField1.resignFirstResponder()
 textField2.resignFirstResponder()
        return true;
    }

Method 2:called when 'return' key pressed.

方法 2:在按下 'return' 键时调用。

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

Method 3:Global Method Write in view did load

方法 3:全局方法写入视图确实加载

self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:))))

Note:Don't forget to add this. Other wise its not work.

注意:不要忘记添加这个。否则它不起作用。

UIGestureRecognizerDelegate, UITextFieldDelegate

I hope it will work for you :)

我希望它对你有用:)

回答by neoneye

UIApplication.sharedApplication().sendAction(#selector(UIResponder.resignFirstResponder), to:nil, from:nil, forEvent:nil)

回答by NiravS

In simple way to hide the keyboard just override the UIView "touchBegan method". So when you tap any where in the view keyboard is hide. here is the sample code.. (Swift 3.0 Updated code)

以简单的方式隐藏键盘只需覆盖 UIView“touchBegan 方法”。因此,当您点击视图键盘中隐藏的任何位置时。这是示例代码..(Swift 3.0 更新代码)

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
{
   self.view.endEditing(true)
}

回答by Ajumal

Like @spfursich said, The best way is, when user touch anywhere above the keyboard the keyboard will disappear. Here is the code :

就像@spfursich 所说的那样,最好的方法是,当用户触摸键盘上方的任何位置时,键盘就会消失。这是代码:

override func viewDidLoad() {
    super.viewDidLoad()

    var tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DismissKeyboard")
    self.view.addGestureRecognizer(tap)
}

func DismissKeyboard(){
    self.view.endEditing(true)
}

回答by Codetard

  • Add UITextFieldDelegate to the class declaration:

    class ViewController: UIViewController, UITextFieldDelegate

  • Connect the textfield or write it programmatically

    @IBOutlet weak var userText: UITextField!

  • set your view controller as the text fields delegate in view did load:

    override func viewDidLoad() {
    super.viewDidLoad()
    self.userText.delegate = self
    }
    
  • Add the following function

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

    with all this your keyboard will begin to dismiss by touching outside the textfield aswell as by pressing return key.

  • 将 UITextFieldDelegate 添加到类声明中:

    类 ViewController: UIViewController, UITextFieldDelegate

  • 连接文本字段或以编程方式编写

    @IBOutlet 弱变量 userText:UITextField!

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

    override func viewDidLoad() {
    super.viewDidLoad()
    self.userText.delegate = self
    }
    
  • 添加以下功能

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

    有了所有这些,您的键盘将通过触摸文本字段外部以及按返回键开始关闭。

回答by Nikita Kurtin

You can also do like this: add event "Did end on exit" from connections inspector of your TextField and connect it to method from relevant ViewController

您也可以这样做:从 TextField 的连接检查器添加事件“Did end on exit”,并将其连接到相关 ViewController 的方法

In my example I connect it to method called 'ended'

在我的示例中,我将其连接到名为“已结束”的方法

declare sender as UITextField and then call sender.resignFirstResponder(); Like this:

将 sender 声明为 UITextField,然后调用 sender.resignFirstResponder(); 像这样:

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