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

在键盘上方显示UIView无法正常工作

盖辉
2023-03-14

我正在尝试将约束移到底部。UI视图的常量,其中我的UITextField显示后位于键盘上方。我设置了通知观察器,但由于某种原因,它不起作用。

override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)
}

@objc func keyboardWillShow(_ notification: Notification) {
    if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
        UIView.animate(withDuration: 0.3, animations: {
            self.constraintToBottom.constant = keyboardSize.height
            print("constant", self.constraintToBottom.constant)
        })
    }
}

当我打印constraintToBottom时。常量显示:

常数346.0

然而,像往常一样,在键盘上方仍然看不到UIView。我做错了什么?

更新

正如所建议的,负号起作用,但也有额外的空间,它看起来是这样的:


共有1个答案

司寇善
2023-03-14

你需要重新布局视图

self.constraintToBottom.constant = -1 * keyboardSize.height
UIView.animate(withDuration: 0.3, animations: {
     self.view.layoutIfNeeded()
     print("constant", self.constraintToBottom.constant)
})
 类似资料:
  • 问题内容: 当用户在inputAccessoryView中点击“附加”按钮时,我想通过键盘创建一个简单的视图。像这样: 有简单的方法吗?或者我应该创建我的自定义键盘? 问题答案: 您可以将该新子视图添加到您的应用程序窗口。

  • 我正在为我的android乞丐项目创建一个1对1扑克芯片计数器应用程序。当我按下任何调用displayBetPlayer1或displayBetPlayer2的按钮(+、-、Bet/Rise)时,我会收到一个运行时错误,所以我知道问题出在这些方法上。我还看到导入语句有一些不对劲的地方,但我对此太陌生,不明白是什么。有人知道问题出在哪里吗?(我将在注释中发布activity_main.xml,因为它

  • 在windows上使用netbeans已经很久了,没有问题。在Debian上安装了它,它启动了,但大多数按钮没有响应(新项目/新文件...)。 这是使用终端发射时的结果。 Netbeans版本:8.2 OS:Parrot(debian OS的发行版)JDK版本:9.0.1 提前道谢。

  • 问题内容: 我需要一个带有附加的下拉样式菜单的JButton。因此,我采用了JPopupMenu并将其附加到JButton上,就像在下面的代码中看到的那样。它需要做的是: 单击时显示弹出窗口 如果第二次单击则将其隐藏 如果在弹出窗口中选择了一项,则将其隐藏 如果用户单击屏幕上的其他位置,则将其隐藏 这4种方法都可以使用,但是由于我使用的是boolean标志,如果用户单击其他位置或选择了一个项目,则

  • 问题内容: 有谁知道为什么upload.onprogress在单独的功能上不能正常工作? 代码工作正常(进度条缓慢移动): 但是,如果我将其投入功能,它将无法正常工作: 在第二个代码上,进度条在文件上传完成后直接跳到100%,而不是在上传过程中很好地移到100% 因此,如果我将功能放进去,我已经尝试了提供的解决方案,它实际上可以工作。有没有办法把它放在函数之外? 问题答案: 通过调用函数本身,并将

  • 问题内容: 我知道已经发布了一些与此有关的问题,但是没有一个问题对我的特定问题有所帮助。我想在整个屏幕上方显示自定义模式,但是我想保持Apple状态栏可见。对于模态,我将一个用于调光效果,将另一个用于与用户进行交互的实际视图。然后将整个模态作为子视图添加到当前视图,并置于最前面。本质上,除了自定义视图外,我试图复制UIAlertView的行为。这是我的一些代码: 上面是与用户交互的对象。 这很好用