似乎对于iOS 8和9,Xcode 7,beginningOfDocument
的属性endOfDocument
和UItextField
始终是nil
,无论你做什么。更糟糕的是,它们不是Swift 2中的可选类型(UITextPosition?
),而是类型为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
}
这真的是一个(巨大的)错误还是我错过了什么?是否有解决方法,可能需要一些步骤来解决问题?
编辑:请注意,此问题不已解答here。建议的修复程序不适用于我的示例代码:
selectable
的属性UITextView
,类本身也没有声明这样的属性。UITextField
之前将beginningOfDocument
添加到视图层次结构中,因此m1h4's answer也不相关。答案 0 :(得分:5)
是的,这是beginningOfDocument
的Swift声明中的一个错误。您可以将其报告给Apple here。
在成为第一响应者后,它将返回有效的UITextPosition
。