iOS 8 と 9、Xcode 7 では、プロパティbeginningOfDocumentとendOfDocumentはUItextField常にnil何をしてもよいようです。UITextPosition?さらに悪いことに、それらはSwift 2のオプションの型 ( ) ではなく、代わりに型UITextPositionであり、まだnil価値があります。デバッガーは<uninitialized>代わりにそれを呼び出しますnilが、その動作は同じです。再現するには、次のコードを any に追加します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
}
これは本当に (巨大な) バグですか、それとも何か不足していますか? 問題を解決するための回避策、おそらくいくつかの手順はありますか?
編集:この問題はここでは回答されていないことに注意してください。そこで提案された修正は、サンプル コードには適用されません。
- 私のデモコードは Interface Builder をまったく使用していないため、Gazzini の回答は機能しません。また、XCode 7 の Interface Builder にはのプロパティがなく、クラス自体もそのようなプロパティを宣言して
selectableいません。UITextView - 私のデモコードは、アクセスされる
UITextField前にビュー階層に追加されるため、 m1h4 の回答も関係ありません。beginningOfDocument