【问题标题】:Keyboard is pushing UIView away键盘将 UIView 推开
【发布时间】:2015-11-22 22:50:15
【问题描述】:

在我的 iOS 应用程序中,我使用了几个 UIView,其中一次只显示 1 个。我通过按钮在这些视图之间切换。

显示一个新的:

self.viewPage2.frame = CGRectMake(0,0,320,568)

隐藏视图:

self.viewPage2.frame = CGRectMake(500,0,320,568)

其中一个 UIView 包含一个 UITextField。当我单击此文本字段时,键盘打开,但 UIView 被推离屏幕。

我希望它与文本字段有关,因此我已包含该源代码。我有一个来自

的代表
@IBOutlet weak var textFieldSearchValue: UITextField!

func textFieldDidEndEditing(textField: UITextField) {
    textFieldSearchValue.resignFirstResponder();
}

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    return true;
}

func textFieldShouldReturn(textField: UITextField) -> Bool {

    textFieldSearchValue.resignFirstResponder();
    return true;
}

在 ViewDidLoad 中:

textFieldSearchValue.delegate = self

所以奇怪的是,当打开键盘时,UIView 被向上推并显示来自 ViewController 的初始屏幕,没有我的 UIViews。 UITextField 也被推离屏幕!

【问题讨论】:

  • 虽然这不是一个解决方案,但当我关闭 AutoLayout 时,一切正常。自然是想用AutoLayout,所以还在找答案

标签: ios swift uiview keyboard uitextfield


【解决方案1】:

由于您正在寻找自动布局解决方案,因此您应该考虑像这样的帧更新

self.viewPage2.frame = CGRectMake(500,0,320,568)

自动布局不支持。

您必须更新约束才能实现上述目标。 例如:

self.myViewBottomSpaceConstraint.constant += 256;
[self.myView updateConstraints];

如果您想拥有超过 1 个文本字段,最好将它们嵌入到 scrollView 或 tableView 中。它们会减轻你的痛苦。

【讨论】:

  • 这听起来合乎逻辑。由于 AutoLayout,约束会打乱视图的定位!
猜你喜欢
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2012-06-04
相关资源
最近更新 更多