Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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_Keyboard - Fatal编程技术网

Ios 在键盘出现之前获取其高度

Ios 在键盘出现之前获取其高度,ios,swift,keyboard,Ios,Swift,Keyboard,我想获得设备的键盘高度,以便在相同高度构建一些对象。这些对象将在键盘实际出现之前出现,因此我不能使用类似的方法。我想知道是否有一种方法可以在键盘没有实际显示的情况下获得键盘的高度?Iv也有类似的问题。我还没有找到一种方法来获得键盘高度而不首先显示键盘,但我确实有办法解决这个问题 var keyboardHeight = CGFloat() var keyboardFirstTime = true 鉴于此,我没有加载 NotificationCenter.default.addObserver

我想获得设备的键盘高度,以便在相同高度构建一些对象。这些对象将在键盘实际出现之前出现,因此我不能使用类似的方法。我想知道是否有一种方法可以在键盘没有实际显示的情况下获得键盘的高度?

Iv也有类似的问题。我还没有找到一种方法来获得键盘高度而不首先显示键盘,但我确实有办法解决这个问题

var keyboardHeight = CGFloat()
var keyboardFirstTime = true
鉴于此,我没有加载

 NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
提供键盘高度的独立功能

func keyboardWillShow(_ notification:Notification)
{
    let userInfo:NSDictionary = (notification as NSNotification).userInfo! as NSDictionary
    let keyboardFrame:NSValue = userInfo.value(forKey: UIKeyboardFrameEndUserInfoKey) as! NSValue
    let keyboardRectangle = keyboardFrame.cgRectValue
    keyboardHeight = keyboardRectangle.height
}
在文本字段中,开始编辑

func textFieldDidBeginEditing(_ textField: UITextField)
{
    //adds .01 delay to wait and assign keyboard height for the first time
    if keyboardFirstTime == true
    {
        let when = DispatchTime.now() + 0.01
        DispatchQueue.main.asyncAfter(deadline: when)
        {
            UIView.animate(withDuration: 0.25, delay: 0, options: [.curveEaseOut], animations:
                {
                self.searchField.frame.origin.y = self.view.frame.height - self.keyboardHeight - self.searchField.frame.size.height
                }, completion: nil)
        }
        keyboardFirstTime = false
    }
    else
    {
        UIView.animate(withDuration: 0.3, delay: 0, options: [.curveEaseOut], animations:
            {
                self.searchField.frame.origin.y = self.view.frame.height - self.keyboardHeight - self.searchField.frame.size.height
            }, completion: nil)
    }

    textField.text = ""
}

第四节也有类似的问题。我还没有找到一种方法来获得键盘高度而不首先显示键盘,但我确实有办法解决这个问题

var keyboardHeight = CGFloat()
var keyboardFirstTime = true
鉴于此,我没有加载

 NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
提供键盘高度的独立功能

func keyboardWillShow(_ notification:Notification)
{
    let userInfo:NSDictionary = (notification as NSNotification).userInfo! as NSDictionary
    let keyboardFrame:NSValue = userInfo.value(forKey: UIKeyboardFrameEndUserInfoKey) as! NSValue
    let keyboardRectangle = keyboardFrame.cgRectValue
    keyboardHeight = keyboardRectangle.height
}
在文本字段中,开始编辑

func textFieldDidBeginEditing(_ textField: UITextField)
{
    //adds .01 delay to wait and assign keyboard height for the first time
    if keyboardFirstTime == true
    {
        let when = DispatchTime.now() + 0.01
        DispatchQueue.main.asyncAfter(deadline: when)
        {
            UIView.animate(withDuration: 0.25, delay: 0, options: [.curveEaseOut], animations:
                {
                self.searchField.frame.origin.y = self.view.frame.height - self.keyboardHeight - self.searchField.frame.size.height
                }, completion: nil)
        }
        keyboardFirstTime = false
    }
    else
    {
        UIView.animate(withDuration: 0.3, delay: 0, options: [.curveEaseOut], animations:
            {
                self.searchField.frame.origin.y = self.view.frame.height - self.keyboardHeight - self.searchField.frame.size.height
            }, completion: nil)
    }

    textField.text = ""
}

一种方法是在某处创建一个文本字段,然后在viewDidLoad中使该文本字段成为第一响应者,然后立即隐藏它。这只会在ViewLoad时发生一次。

一种方法是在某处创建一个文本字段,然后在viewDidLoad中使该文本字段成为第一响应者,然后立即隐藏它。这只会在加载视图时发生一次。

键盘第一次布尔值会增加很小的延迟。这使代码有足够的时间计算键盘高度,并将其设置为var。keyboardFirstTime布尔值增加了一个非常小的延迟。这给了代码足够的时间来计算键盘高度,并将其设置为变量。您必须使用链接方法,因为在显示之前,您无法知道键盘大小。用户可能安装了自定义键盘,也可能切换键盘。有些键盘会有不同的高度,有些键盘上可能会有工具栏。我写了一篇关于这个主题的文章,如果你还需要帮助,请查看。您必须使用链接方法,因为在显示之前,您无法知道键盘的大小。用户可能安装了自定义键盘,也可能切换键盘。有些键盘会有不同的高度,有些键盘上可能会有工具栏。我写了一篇关于这个主题的文章,如果你还需要帮助,请查看。