当前位置: 首页 > 知识库问答 >
问题:

如何使键盘在屏幕上显示视图时向上推?Xcode Swift[重复]

华良平
2023-03-14

所以我有一个带有文本字段的视图,但是文本字段在底部。当我单击键盘时,它会弹出并覆盖文本字段,这是我的问题。我想知道当键盘出现时是否有可能将视图的其余部分向上推?

共有3个答案

萧光华
2023-03-14

您应该将文本字段放入UIScrollView并调整其contentInsetUIKeyboardddShowNotify上。

阅读此帮助页面:https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW7

王声
2023-03-14

您可以选中此教程移动UITextField,以便键盘不会隐藏它

你会在这里找到演示

或者你可以检查这个stackoverflow的答案当键盘出现迅速移动文本字段

最好的答案是通过如下方式更新底部约束进行管理

func keyboardWasShown(notification: NSNotification) {
     var info = notification.userInfo!
     var keyboardFrame: CGRect = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()

     UIView.animateWithDuration(0.1, animations: { () -> Void in
       self.bottomConstraint.constant = keyboardFrame.size.height + 20
  })
}
桂宏旷
2023-03-14

您可以注册视图控制器,以便在即将显示键盘时收到通知,然后向上推视图。

class ViewController: UIViewController {

var keyboardAdjusted = false
var lastKeyboardOffset: CGFloat = 0.0

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
}

override func viewDidDisappear(animated: Bool) {
    super.viewDidDisappear(animated)
    NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil)
    NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil)
}

func keyboardWillShow(notification: NSNotification) {
    if keyboardAdjusted == false {
        lastKeyboardOffset = getKeyboardHeight(notification)
        view.frame.origin.y -= lastKeyboardOffset
        keyboardAdjusted = true
    }
}

func keyboardWillHide(notification: NSNotification) {
    if keyboardAdjusted == true {
        view.frame.origin.y += lastKeyboardOffset
        keyboardAdjusted = false
    }
}

func getKeyboardHeight(notification: NSNotification) -> CGFloat {
    let userInfo = notification.userInfo
    let keyboardSize = userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue
    return keyboardSize.CGRectValue().height
}

}
 类似资料:
  • 问题内容: 我正在使用PIL库进行一些图像编辑。关键是,我不想每次都将图像保存在HDD上以在资源管理器中查看它。是否有一个小模块可以使我设置窗口并显示图像? 问题答案: 从PIL教程中: 一旦有了 Image 类的实例,就可以使用该类定义的方法来处理和操纵图像。例如,让我们显示刚刚加载的图像: 更新: 如今,该方法已正式记录在PIL的Pillow分支中,并说明了如何在不同的OS上实现该方法。

  • 我正在开发一个应用程序,我想在屏幕上显示计时器,并用它做动作。我需要当计时器停止时,玩家会输掉比赛。这部分我可以单独做,但我不知道如何做的部分是如何在屏幕上显示计时器,并使剩余的时间可见。 我希望你能帮助我,谢谢你的帮助!

  • 我尝试过在键盘出现时向上移动屏幕。我成功地做到了,但我需要知道如何仅在单击底部时滚动视图,而不是顶部,因为键盘只是触摸下面的。 应用程序是这样的: 我们的观点

  • 问题内容: 我们正在考虑用Java编写一种软件,该软件可以在运行期间记录监控什么内容。您对如何有效捕获监视器输出有任何建议吗? 占用的CPU越少,我们捕获屏幕的频率就越高,并且在不干扰其他正在运行的应用程序的情况下,生成的视频越流畅。 如果复制屏幕捕获部分不太困难,则Java中的现有开放源代码程序将起作用。我希望它不需要调用另一种编程语言。我们会看到。 问题答案: 我不确定是否需要框架。 请查阅该

  • 我试图集成Agora SDK,我已经能够设置它的功能,但唯一的问题是本地视图是空白的,直到我做热重启,热重启后一切都很好,远程视图工作正常,我一直试图调试这个问题没有用,下面是我的代码。