在iOS 8,9上,属性UITextField.beginningOfDocument总是为零.在iOS中存在严重错误?

Ras*_*sto 6 uitextfield ios uitextinput swift

这似乎与iOS的8,9,7 Xcode的特性beginningOfDocumentendOfDocumentUItextField总是nil你做whathever.更糟糕的是,它们不是UITextPosition?Swift 2 中的可选类型(),而是它们的类型UITextPosition- 并且仍然具有nil价值.Debuger称之为<uninitialized>代替,nil但它的行为与它相同.要重现,请将以下代码添加到任何UIViewController:

override func viewDidAppear(animated: Bool) {
    let textField = UITextField()
    textField.text = "Hello"
    view.addSubview(textField)
    let position: UITextPosition? = textField.beginningOfDocument //beginningOfDocument is of type UITextPosition, not optional
    //following line should always succeed
    let positionUnwrapped = position! //fatal error: unexpectedly found nil while unwrapping an Optional value
}
Run Code Online (Sandbox Code Playgroud)

这真的是一个(巨大的)错误还是我错过了什么?是否有解决方法,也许有一些步骤来解决问题?


编辑:请注意,这里没有回答这个问题.建议的修复程序不适用于我的示例代码:

  1. 我的演示代码根本不使用Interface Builder,因此Gazzini的答案不起作用.此外,Interface Builder的XCode中7没有财产selectableUITextView,也不类本身申报财产.
  2. 我的演示代码UITextFieldbeginningOfDocument访问之前添加到视图层次结构中,因此m1h4的答案也不相关.

rob*_*off 5

是的,这是Swift宣言中的一个错误beginningOfDocument.您可以在此处向Apple报告.

它将UITextPosition成为第一响应者后返回有效.