【问题标题】:Hide Keyboard IOS Swift隐藏键盘 IOS Swift
【发布时间】:2016-05-30 21:03:42
【问题描述】:

我遇到了以下问题:

我有两个 TextField,一个具有默认行为,另一个捕获 textFieldDidBeginEditing 方法委托,以呈现具有 PresentationStyle (Custom) 和 TransitionStyle (CrossDissolve) 的 UIViewController。到目前为止一切正常。但是,如果我编辑第一个 textField(并让键盘保持打开状态)然后转到第二个,则键盘是打开的,我无法关闭它(好像第一个 textField 失去了焦点,甚至 textFieldShouldReturn 都没有被调用我按下按钮介绍)。

我试过了:

  • TextFieldDidEndEditing(用于调用 resignFirstResponder)
  • 在viewWillDissaper方法中(我也叫resignFirstResponder)

    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
    
    func textFieldDidEndEditing(textField: UITextField) {
        print("Resign Last TextField")
        textField.resignFirstResponder()
    }
    
    func textFieldDidBeginEditing(textField: UITextField) {
        print("Did Begin editing")
        if textField == self.departing || textField == self.returning{
            textField.resignFirstResponder()
            self.lastTextFieldSelected = textField
    
            let datePickerViewController = Util.getViewController("DatePickerViewController") as! DatePickerViewController
            datePickerViewController.dateStyle = NSDateFormatterStyle.ShortStyle
            datePickerViewController.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
            datePickerViewController.modalPresentationStyle = UIModalPresentationStyle.Custom
            datePickerViewController.datePickerDelegate = self
    
            self.presentViewController(datePickerViewController, animated: true, completion: nil)
        }
    }
    

编辑: 我尝试使用 self.view.endEditing(true) 什么都没有。

我做了一个小例子(我检查的是 textFieldShouldBeginEditing 允许我关闭键盘。): https://github.com/Abreu0101/TextFieldBug

【问题讨论】:

  • 如果您想在 viewWillDisappear 为任何第一响应者关闭键盘,您可以尝试 self.view.endEditing(false) 如果它仍然没有关闭,您可以尝试 self.view.endEditing(true) ,将强制关闭键盘
  • 在您描述的情况下,您的所有textFieldDidBeginEditing 代码实际上都在执行吗?
  • 用于关闭键盘。试试self.view.endEditing = true
  • @matt,是的,它正在执行代码,但首先运行 textFieldDidBeginEditing (在第一步中,松开焦点),然后打开 datePickerViewController (键盘不隐藏)。接下来,委托调用 textFieldDidEndEditing(但没有任何反应)。
  • @Pyro,anhtu,我会尝试那个选项(有时之前尝试过,但不在 viewWillDisapper 中)。

标签: ios swift uiviewcontroller uitextfield uitextfielddelegate


【解决方案1】:

看起来你的textFieldDidEndEditing 甚至没有调用其他方法。确保您设置了UITextField 的委托:

textField.delegate = self

同时在你的类中导入UITextFielDelegate

希望有帮助:)

【讨论】:

  • 感谢您的回复,我有那套。
猜你喜欢
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多