0

私が得たのは、プロトタイプセルを使用しているTableViewと、データソースに供給する配列です-データソースに応じて、特定のテーブルビューセル識別子を使用してセルを構築しています。(ここで何か間違ったことをしている場合は修正してください。私は iOS 開発に不慣れで、可能な限りベスト プラクティスを探しています :)

とにかく、ストーリーボードで作成したテーブル ビュー セルの 1 つに UITextField があります。Return Key が「Done」に設定され、「Auto-enable Return Key」がチェックされていることを Storyboard GUI で設定しました。次に、コントローラーに入り、次のコードを使用しました。

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField{
    [textField resignFirstResponder];
    NSLog(@"finished change...");
}

また、NSLog に出力するようにコード化されたコントローラーにリンクされた「Editing Did End」イベントも取得しました。

Return または Done を押すと、ログは textFieldDidEndEditing に配置されたテキストとイベント関数を出力します。ただし、表のセルを選択したり、スライダーを動かしたりしても何も起こりません。つまり、キーボードがまだ画面上にあるということです。

これを解決する方法はありますか?

また、私はこのプロトタイプ細胞に取り組んでいますが、私が必要としているものはかなり骨が折れるようです. 基本的に必要なのは、ユーザーがいくつかの設定を編集できるようにするための基本的なテーブルだけなので、次のようになります。

編集可能な 2 つのテキストフィールド、1 つのスライダー、2 つのスイッチ

これらすべてを Static UITableView に配置しましたが、表示されませんでした。これは、UITableViewController を必要とするこのタイプのテーブルの制限によるものです。これを回避する方法はありますか?

長い投稿で申し訳ありません-私はまだiOS開発について頭を悩ませていますが、今のところ楽しんでいます:)

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

4

1 に答える 1

4

私は通常、追跡するために ivar を保持しています。これにより、あらゆる種類のイベントに基づいてキーボードを便利に閉じることができます。

@interface ViewController () {
   UITextField *_textFieldBeingEdited;
} 
@end

- (void)textFieldDidBeginEditing:(UITextField *)textField {
   _textFieldBeingEdited = textField;
}

- (void)textFieldDidEndEditing:(UITextField *)textField{
   // no need to resignFirstResponder here.
   _textFieldBeingEdited = nil;
}

- (void)tableView:(UITableView *)tableView 
          didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
   if (_textFieldBeingEdited) {
     [_textFieldBeingEdited resignFirstResponder];
   }
   ...
}
于 2012-10-27T23:39:17.590 に答える