Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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 如何将键盘放在UITextField的正下方?_Ios_Swift - Fatal编程技术网

Ios 如何将键盘放在UITextField的正下方?

Ios 如何将键盘放在UITextField的正下方?,ios,swift,Ios,Swift,我的应用程序有两个视图,一个在屏幕的上半部分,一个在屏幕的下半部分。上半部分视图称为mainView,下半部分视图称为tableView。我在主视图底部的主视图中有一个UITextField。因此,我得到了tableView的高度和键盘之间的差异,这样我就可以上下移动mainView,使键盘直接位于uitextfield的下方。下面我使用的代码适用于iPhone4S和iPhone5,但任何较大的代码都会在文本字段和键盘之间留下一点空白。我怎样才能解决这个问题 func keyboardShow

我的应用程序有两个视图,一个在屏幕的上半部分,一个在屏幕的下半部分。上半部分视图称为mainView,下半部分视图称为tableView。我在主视图底部的主视图中有一个UITextField。因此,我得到了tableView的高度和键盘之间的差异,这样我就可以上下移动mainView,使键盘直接位于uitextfield的下方。下面我使用的代码适用于iPhone4S和iPhone5,但任何较大的代码都会在文本字段和键盘之间留下一点空白。我怎样才能解决这个问题

 func keyboardShown(notification: NSNotification) {
        let info  = notification.userInfo!
        let value: AnyObject = info[UIKeyboardFrameEndUserInfoKey]!

        let rawFrame = value.CGRectValue
        let keyboardFrameHeight = view.convertRect(rawFrame, fromView: nil).height
        let bottomSpace = tableView.bounds.height

        let spaceDifference = (keyboardFrameHeight - bottomSpace)

        view.layoutIfNeeded()
        self.mainViewProportionalHeight.constant -= spaceDifference
        animLayout(0.5)
    }
重申:

mainView=视图的上半部分

tableView=视图的下半部分


有一个UITextField附加到mainView的底部,因此mainView的底部=mainView的底部。基本上,我正在尝试将主视图与键盘正上方对齐,中间没有任何空格。

我发现解决问题的最简单方法是使用CocoaPod,IQKeyboardManager

你只需要将它添加到你的pod文件中,然后运行pod安装,它就可以将你的键盘定位在你写的文本字段的正下方。(即使是键盘通常会覆盖的部分)


这里有一个链接:

嘿,谢谢你的回复!键盘和uitextfield之间的空白不会让我太烦恼;我已经实现了我想要的,那就是阻止键盘覆盖文本字段。然而,出于学术原因,我对我的bug的解决方案很好奇。不过,谢谢你提出了一个很酷的解决方案!我相信它会帮助看到这一点的人:)哦,这是公平的,我想知道是不是这样。如果你最终需要再次解决这个问题,我强烈推荐IQKeyboardManager。这真的帮我省去了很多麻烦。我听说过关于cocoapod库的很棒的东西,在掌握了基础知识之后,我一定会研究它。@Acahreon我会确保将cocoapod包含在基础知识中(个人),因为我看到很多新开发人员都回避它们。这当然是一项基本技能。也就是说,我真的很欣赏你的学习精神!设置断点,
keyboardFrameHeight
bottomSpace
是否以分数形式存在?什么是约束mainviewproportalheight??空白是什么样子的?都不是分数的。主视图比例高度是主视图的比例高度(如果不够清晰:P)。该常量将主视图上下移动多少个点。“空白”(抱歉,不清楚)是键盘和主视图底部(文本字段)之间的空间。键盘和主视图底部之间应该有0个空格。谢谢你的评论!我一辈子都搞不懂这个:)