我有一个自定义键盘最奇怪的情况。
首先,我为文本字段设置了一个虚拟视图,以便隐藏股票键盘let dummyView : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))
amountField.inputView = dummyView
然后我的自定义键盘在文本字段
func textFieldDidBeginEditing(textField: UITextField) {
keyboardContainer.hidden = false
UIView.animateWithDuration(0.6, animations: {
self.keyboardContainer.frame = self.keyboardScreenPosition!
}, completion: {
finished in
if finished {
//just in case
}
})
}
另外,我已经设置了一个按钮,该按钮应该结束编辑并隐藏我的自定义键盘
@IBAction func calculeaza(sender: AnyObject) {
self.amountField.resignFirstResponder()
UIView.animateWithDuration(0.6, animations: {
self.keyboardContainer.frame.origin.y = self.view.bounds.height
}, completion: {
finished in
if finished {
}
})
}
最奇怪的部分来自resignFirstResponder()
。让我解释一下:如果不包含该部分,键盘隐藏得很好(但文本字段保持闪烁的光标,这不是c的选项)。
如果包括辞职部分,键盘将从顶部动画到当前位置,然后再次按下按钮,它会按预期向下滑动。我真的很困惑为什么会发生这种情况...我调试了视图的大小,高度还可以,所以它应该从头开始滑下来。我真的不明白发生了什么。
非常感谢任何帮助,非常感谢!
编辑:另一个奇怪的效果是如果我在动画结束闭包中移动resign部分(或超级编辑)。键盘滑动得很好,然后它再次出现在屏幕上
答案 0 :(得分:0)
这听起来像是自动布局限制的问题。这些在animateWithDuration之后更新,这可能导致这种奇怪的行为。如果在故事板中有(a)约束用于自动布局,请尝试更新(/那些)。如果您还没有,则需要将其添加为IBOutlet并为持续时间中的自动布局更改设置动画。
例如,假设约束称为theRelevantConstraint
。然后替换中间线
self.theRelevantConstraint.constant = valueItShouldBe
UIView.animateWithDuration(0.6, animations: {
self.view.layoutIfNeeded()
}, completion: {
finished in
if finished {
}
})