6

iOS 8 と 9、Xcode 7 では、プロパティbeginningOfDocumentendOfDocumentUItextField常に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
}

これは本当に (巨大な) バグですか、それとも何か不足していますか? 問題を解決するための回避策、おそらくいくつかの手順はありますか?


編集:この問題はここでは回答されていないことに注意してください。そこで提案された修正は、サンプル コードには適用されません。

  1. 私のデモコードは Interface Builder をまったく使用していないため、Gazzini の回答は機能しません。また、XCode 7 の Interface Builder にはのプロパティがなく、クラス自体もそのようなプロパティを宣言してselectableいません。UITextView
  2. 私のデモコードは、アクセスされるUITextField前にビュー階層に追加されるため、 m1h4 の回答も関係ありません。beginningOfDocument
4

1 に答える 1

5

はい、これは の Swift 宣言のバグですbeginningOfDocumentこちらから Apple に報告できます。

UITextPositionファーストレスポンダーになった後、valid を返します。

于 2015-10-23T16:01:12.177 に答える