0

「NameCellView.xib」というnibファイルを持つ「NameCell」というクラスからテーブルビューがセルオブジェクトをインスタンス化するアプリnを作成しました(Name CellはNameCellViewのクラスです)。NameCellView.xib ビュー コントローラー内には、"NameField" という名前の UITextField があります。ここで、UITextField の (NameField) デリゲートをファイル所有者に設定しようとしました (たとえば、セルのクラス = NameCell)。しかし、それを行うと、テキストフィールドを操作しようとするとすぐにアプリがクラッシュし (たとえば、タップすると)、表示される唯一のメッセージは「(lldb)」であり、次の行がメインで緑色で強調表示されます.mアプリファイル:

    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

なぜそれが起こるのか、それを修正する方法についてのアイデアはありますか? 私がやろうとしているのは、ユーザーが「return」キーをタップしたときにキーボードを閉じることだけです。そのため、委任なしでそれを行うためのより良い方法があれば、私はすべて耳を傾けます!

助けてくれてどうもありがとう!どんなコメントでも大歓迎です!

4

2 に答える 2

0

説明では、物事は明確ではありません。ただし、 xib で接続を確認してください。問題はxib接続にあると思います

于 2012-07-10T09:03:35.767 に答える
0

キーボードを閉じる別の方法がある場合は、タップすると「hideKeyboard」メソッドを呼び出す「完了」ボタンを追加できます。

このボタンをキーボード アクセサリ ビューに追加します (基本的には、見栄えを良くするためにカスタマイズされた単純な UIToolBar)。

Interface Builderでこれを行う方法はわかりませんが、純粋なコードでこれを行う方法は知っています:

// setup done button accessory view for keyboard

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[toolBar setBarStyle:UIBarStyleBlackTranslucent];

UIButton *btnDone = [[UIButton alloc] initWithFrame:CGRectMake(20, 8, 65, 30)];
[btnDone setTitle:@"Done" forState:UIControlStateNormal];
btnDone.titleLabel.font = [UIFont fontWithName:@"Arial-BoldMT" size:14];
btnDone.backgroundColor = [UIColor darkGrayColor];
btnDone.layer.cornerRadius = 5.0;
btnDone.tintColor = [UIColor darkGrayColor];
[btnDone addTarget:self action:@selector(hideKeyboard) forControlEvents:UIControlEventTouchUpInside];

[toolBar addSubview:btnDone];

[btnDone release];

// -------------------------------------------------------------------
// let your text field's keyboard know about the accessory view
// -------------------------------------------------------------------
myTextField.inputAccessoryView = toolBar;

...

// Hide Keyboard Method
-(void)hideKeyboard
{
    [myTextField resignFirstResponder];
}

これにより、キーボードの上にカスタム ビューが追加されるので、[完了] ボタンを押してキーボードを非表示にできます。

于 2012-07-10T12:23:46.563 に答える