如何将键盘放在 UITextField 下方?

Posted

技术标签:

【中文标题】如何将键盘放在 UITextField 下方?【英文标题】:How do I get the keyboard right under a UITextField? 【发布时间】:2015-09-09 22:31:21 【问题描述】:

我的应用有两个视图,一个在屏幕的上半部分,一个在屏幕的下半部分。上半部分视图称为mainView,下半部分称为tableView。我在主视图底部的主视图中有一个 UITextField。因此,我得到了 tableView 的高度和键盘之间的差异,因此我可以将 mainView 向上/向下移动到足以使键盘直接位于 uitextfield 下方。我在下面使用的代码适用于 iphone 4s 和 iphone 5,但任何更大的代码都会在文本字段和键盘之间留下一点空白。我该如何解决这个问题?

 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 = 视图的下半部分

在mainView的底部附加了一个UITextField,这样mainview的底部=mainView的底部。基本上,我试图在键盘上方对齐 mainView,中间没有任何空格。

【问题讨论】:

设置断点,keyboardFrameHeightbottomSpace 是否是分数? 什么是约束 mainViewProportionalHeight??空白区域是什么样子的? 两者都不是小数。 mainViewProportionalHeight 是主视图的比例高度(如果还不够清楚:P)常数将其向上/向下移动您设置的点数。 “空白”(抱歉,不清楚)是键盘和主视图底部(文本字段)之间的空间。键盘和主视图底部之间应该有 0 个空间。感谢您的评论!我这辈子都想不通:) 【参考方案1】:

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

您只需将其添加到您的 podfile 中,然后运行 ​​pod install,它会负责将您的键盘定位在您书写的任何文本字段的下方。(即使是键盘通常会覆盖的那些)

这是一个链接:https://cocoapods.org/?q=iqkeyboardmanager

【讨论】:

您好,感谢您的回复!键盘和 uitextfield 之间的空白并没有太困扰我;我已经实现了我想要的,即防止键盘覆盖文本字段。但是,出于学术原因,我很好奇我的错误的解决方案。不过,感谢您提出一个很酷的解决方案!我相信它会帮助看到这个的人:) 哦,那是公平的,我想知道是不是这样。如果你最终需要再次解决这个问题,我强烈推荐 IQKeyboardManager。这真的为我省去了很多麻烦。 听说过cocoapod库的好东西,掌握了基础一定会去研究的。 @acahreonn 我会确保将 cocoapods 包含在基础知识中(个人),因为我看到很多新开发人员回避它们。这无疑是一项必不可少的技能。也就是说,我真的很欣赏你的学习精神!

以上是关于如何将键盘放在 UITextField 下方?的主要内容,如果未能解决你的问题,请参考以下文章

Swift:UITextField 被键盘隐藏

编辑 UITextField 时如何关闭键盘

Swift - 如何在使用软件键盘时使 UITextField 可见? [复制]

ios开发UI篇—UITextfield

如何在 viewDidLoad 上的 Swift 中显示没有 UITextField 的标准数字键盘

使用 UIPopover 显示键盘