【问题标题】:How do I get the keyboard right under a UITextField?如何将键盘放在 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 个空间。感谢您的评论!我这辈子都想不通:)

标签: ios swift


【解决方案1】:

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

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

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

【讨论】:

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