弹出键盘时,将原点移至顶部时,会出现黑色

时间:2019-04-15 06:28:43

标签: ios swift uiview uikeyboard

当键盘显示以使文本字段显示在屏幕顶部时,我正在将self.view的原点移动文本字段的-minY。但是,如果文本字段位于底部附近,则框架底部将变为黑色。我点击了附件图像中的第一个文本字段,将其移至顶部。有没有办法在不显示黑色的情况下移动视图?

视图层次为

+ UIViewController
  + UIView
    + UIScrollView
      + UIView
        - UITextField
        - UITextField
        - UITextField
self.view.frame.origin.y = -(tagsTextField.frame.minY)

screenshot

3 个答案:

答案 0 :(得分:0)

您可以将嵌入视图(可能是导航控制器)的背景颜色设置为与视图背景颜色相同的颜色。

我通常在表单屏幕中所做的就是将输入字段放在UITableView中。然后,我滚动UITableView,而不是向上移动视图以显示当前输入字段。

因此,UITableView的背景视图/颜色不会移动。

答案 1 :(得分:0)

我通过在文本框点击上设置滚动视图内容偏移来修复它。

scrollView.setContentOffset(CGPoint(x: 0, y: tagsTextField.frame.minY), animated: true)

并在键盘关闭时重置。

scrollView.setContentOffset(CGPoint(x: 0.0, y: 0.0), animated: true)

答案 2 :(得分:0)

当键盘框架将文本框按键盘高度隐藏时,您可以将框架向上移动:

override func keyboardWillBeShown(note: Notification) {
    let userInfo = note.userInfo
    let keyboardFrame = userInfo?[UIKeyboardFrameEndUserInfoKey] as! CGRect
    if keyboardFrame.intersects(activeTextField.frame) {
        UIView.animate(withDuration: 0.2) {
            self.view.frame.origin.y = -keyboardFrame.height
        }
    }
}

override func keyboardWillBeHidden(note: Notification) {
    UIView.animate(withDuration: 0.2) {
        self.view.frame.origin.y = 0
    }
}