Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当键盘处于';它已经看得见了_Ios_Swift_Uitextfield_Uikeyboard_Uitextviewdelegate - Fatal编程技术网

Ios 当键盘处于';它已经看得见了

Ios 当键盘处于';它已经看得见了,ios,swift,uitextfield,uikeyboard,uitextviewdelegate,Ios,Swift,Uitextfield,Uikeyboard,Uitextviewdelegate,当我有超过1个UITextField时,我无法关闭键盘 我有两个文本字段:TextField1和TextField2,我给它们分别加上标签1和2 我想让if tag等于2,然后它隐藏键盘,如果我触摸tag等于1的textfield,键盘再次可见,这是我的代码工作,但当我将其返回时,代码不符合我的要求,我首先触摸TextField1,然后触摸TextField2键盘仍然可见且不隐藏 我的代码是这样的 func textFieldDidBeginEditing(textField: UITextFi

当我有超过1个UITextField时,我无法关闭键盘

我有两个文本字段:
TextField1
TextField2
,我给它们分别加上标签
1
2

我想让if tag等于2,然后它隐藏键盘,如果我触摸tag等于1的textfield,键盘再次可见,这是我的代码工作,但当我将其返回时,代码不符合我的要求,我首先触摸
TextField1
,然后触摸
TextField2
键盘仍然可见且不隐藏

我的代码是这样的

func textFieldDidBeginEditing(textField: UITextField) {
        if (textField.tag == 2) {
            self.view.endEditing(false)
            textField.resignFirstResponder()
        } else {
            self.view.endEditing(true)
        }
    }
我还尝试使用事件,如
编辑确实开始了
编辑更改了
,但不能像我想要的那样做

请帮助我如何在键盘已可见时隐藏它

请尝试以下代码

-(BOOL) textFieldShouldBeginEditing:(UITextField *)textField
{
     if(textField.tag == 2)
     {
          [[self.view viewWithTag:1] resignFirstResponder];
          return false;
     }
     else
     {
          return true;
     }
}

您也可以像使用下面的textfield委托方法一样执行此操作

func textFieldShouldReturn(textField: UITextField) -> Bool
{
    if (textField == self.TextField1) {
        self.TextField2.becomeFirstResponder()
    }
    else {
        textField.resignFirstResponder()
        self.view.endEditing(true)
    }
    return true
}
希望这能对您有所帮助。

试试这个:

func textFieldDidBeginEditing(textField: UITextField) {
        if (textField.tag == 2) {
            self.view.endEditing(true)
        } else {
            textField.becomeFirstResponder()
        }
}

self.view.endEditing(true)
不会显示键盘,它实际上会试图隐藏它,迫使第一响应者辞职。

我认为您没有在这个类上设置UITextFieldDelgate,所以在viewDidLoad()中

然后添加文本字段didbeginediting,如下所示:-

   func textFieldDidBeginEditing(textField: UITextField) {
    if (textField.tag == 2) {
        self.view.endEditing(true)
    } else {
        textField.becomeFirstResponder()
    }

}

为什么您要辞去第一响应者的职务,或者在did begin editing委托方法中结束编辑?这难道不会使输入文本变得不可能吗?@jrturton我想当我触摸我的文本字段2时,它仍然有闪烁的光标,但没有显示键盘为什么?用户是否有其他方法将文本输入文本字段?请参阅@simplebob answer。这就是你问题的解决办法。self.view.endEditing(false)永远不会关闭键盘。我在编写代码时输入了一个错误,代码已经是compare tag with 2
   func textFieldDidBeginEditing(textField: UITextField) {
    if (textField.tag == 2) {
        self.view.endEditing(true)
    } else {
        textField.becomeFirstResponder()
    }