如何在文本字段和视图之间切换第一响应者

时间:2017-08-17 21:00:30

标签: ios swift

我有一个带有UITextView和UITextField的UIViewController。

UITextField成为视图加载时的第一个响应者:

override func viewDidAppear(_ animated: Bool) {
  super.viewDidAppear(animated)
  textField.becomeFirstResponder()
}

问题是我不能简单地点击UITextView并开始编辑。我的猜测是我需要先从UITextField辞退第一个响应者。

我尝试使用UITextFieldDelegate方法来结束编辑并添加textField.resignFirstResponder()方法,但该方法根本没有被触发(基于未显示的print语句)。

以下是该方法的一个示例:

func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return true
}

我想最终在这两个文本视图之间切换,而不是解雇键盘。因此,第一响应者状态将简单地来回传递。但是,我似乎无法找到任何方法,基本上让我的火在点击时调用方法。

有谁知道哪种方法可以使用此功能?

2 个答案:

答案 0 :(得分:1)

如果您在模拟器上使用iOS系统键盘有时不会出现...当您切换文本时Field或View键盘不会在真实设备上消失..如果您想尝试模拟器取消选中从模拟器硬件选项连接硬件键盘。 .. Simulator Setting Screenshot

答案 1 :(得分:0)

resignFirstResponder内调用textFieldShouldEndEditing无效,因为仅在textField即将辞职的第一响应者时调用该函数。 您应该在resignFirstResponder内使用textFieldShouldReturn,如果您想在点击返回键时结束编辑,或者如果您想首先辞职,则应覆盖UIViewController s touchesBegan方法当用户触摸`textField。

之外的任何地方时,响应者

在按回车键方法时辞职第一响应者:

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