看起来,对于iOS 8和9,Xcode 7,属性beginningOfDocument和endOfDocument of 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
}这真的是一个(巨大的)错误,还是我遗漏了什么?有没有解决办法,也许是一些解决问题的方法?
编辑:注意到这个问题是而不是回答的这里。建议的修补程序不适用于我的示例代码:
UITextView的属性selectable,类本身也没有声明此类属性。UITextField之前添加了beginningOfDocument来查看层次结构,因此M1h4回答也不相关。发布于 2015-10-23 16:01:12
是的,这是beginningOfDocument的Swift声明中的一个bug。你可以向苹果这里报告。
它将返回一个有效的UITextPosition后,它成为第一个响应。
https://stackoverflow.com/questions/33302640
复制相似问题