6

これは奇妙だと思います。UIAlertViewから継承する独自のクラスを作成しました。このクラスでは、サブビューとしてUITableViewを追加し、セルにはUILabelとUITextFieldが含まれています。

クラスは次を実装します:UITableViewDelegate、UITableViewDataSourceおよびUITextFieldDelegate、

cellForRowAtIndexPathでは、各cell.uiTxtField.delegateがselfに設定されています。

シミュレータと実際のiPhoneデバイスの両方で次のことが発生します。

  • UITextFieldでポインター/指を設定すると、キーボードがポップアップし、 textFieldDidBeginEditingがトリガーされます。これは問題なく、期待どおりです。

  • UITextFieldを離れると、textFieldDidEndEditingがトリガーされます。これも問題なく、期待どおりです。

  • しかし、テキストの入力を開始すると、カーソルの点滅は停止しますが、UITextFieldにテキストが入力されません。

  • テキストを含むUITextFieldでポインタ/指を押したままにして、[コピー]を選択し、別のUITextField(または同じ)に貼り付けることで、テキストをコピーして貼り付けることができます

  • バックスペースは正常に機能します。

  • また、記号やスマイリーなどを入力してみましょう。

  • 入力できないのは文字/文字と数字だけです

  • 戻るボタンはtextFieldShouldReturnをトリガーしません

textFieldDidBeginEditingとtextFieldDidEndEditingがトリガーされるので、デリゲートの設定は問題ないと思いますが、テキストを入力できない理由とtextFieldShouldReturnがトリガーされない理由がわかりません。

これは関連している可能性があります。

どんな助けでも大歓迎です。

4

2 に答える 2

0

簡単な答え: UITextField の「編集」プロパティを台無しにするコードがないことを確認してください。

私は間違いなくデリゲートを適切に設定していて、textFieldDidBeginEditing と textFieldDidEndEditing が呼び出されていたのと同じ症状がありましたが、textFieldShouldReturn と shouldChangeCharactersInRange は呼び出されていませんでした。また、文字を入力することはできませんでしたが、テキスト フィールドにコピー ペーストすることはできました。私の場合、たまたまUITableViewのセル内にテキストフィールドを配置していました。削除ボタンが機能しなかったという点で、私の状況は少し異なりました。

私が間違っていたのは、セルで生の UITextField を使用していなかったことです。UITextField の独自のサブクラスがありました。私のサブクラスにはプロパティ「isEditing」があり、これを UITextFieldDelegate メソッドで変更し、テキスト フィールドが選択されたときにテーブル ビューをスクロールする方法を理解するために使用しました。これは、UITextField の「isEditing」メソッドをオーバーライドし、UITextField の「editing」プロパティのゲッターとして使用されていました。サブクラスの isEditing プロパティを削除すると、すべてが期待どおりに動作しました。

于 2013-12-04T02:05:41.970 に答える