我在UITableView中为登录表单实现了几个UITextField.当第一次在第一次响应第一响应者时,发生了一个非常奇怪的动画跳跃.由于这些几乎完全是在Interface Builder中使用.xib文件构建的,因此我几乎没有要添加的代码.但是这里有一个有趣的.gif来显示行为:
更新:
我把它缩小到我正在听键盘事件来调整视图约束的事实.这是导致问题的代码:
func keyboardWillHide(notification: NSNotification) {
// tried self.formContainer.layoutIfNeeded() here too to force pending layouts
formContainerYConstraint.constant = 40
UIView.animateWithDuration(0.4) { () -> Void in
self.formContainer.layoutIfNeeded()
}
}
Run Code Online (Sandbox Code Playgroud)
...表单容器是一个包含表视图和登录按钮的视图.
我也用UITextView看过这个.显然,我遗漏了一些非常基本的东西.
我试过: - 将textsize设置为small - UITextField:设置1行,不调整大小 - 删除移动texfield的功能
import UIKit
class XViewController: UIViewController, UITextFieldDelegate, UIGestureRecognizerDelegate {
// UI elements
let cancelButton = UIButton()
let okButton = UIButton()
var image:UIImage?
var previewImageView:UIImageView = UIImageView()
let textField = UITextField()
let tapGestureRecognizer = UITapGestureRecognizer()
let textFieldTypingPositionY:CGFloat = 200
var textFieldActualPositionY:CGFloat!
let textFieldHeight:CGFloat = 40
var draggingTextField:Bool = false
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
setupTextField()
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString text: String) …
Run Code Online (Sandbox Code Playgroud)