0

テキスト フィールドを含むカスタム セルを作成しました。ユーザーが完了ボタンを押したときにキーボードを非表示にしたいと考えています (以下のスクリーン ショットを参照)。

カスタムセルは「AccountViewCell」にあります。私のコードでは、次のカスタム セルを呼び出して表示します。

- (UITableViewCell *)tableView:(UITableView *)tableView2 cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0)
    {
        static NSString *CellIdentifier = @"AccessCard";
        static NSString *Cellnib = @"AccountViewCell";

        AccountViewCell *cell = [tableView2 dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil) {

            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:Cellnib owner:self options:nil];
            cell = (AccountViewCell *)[nib objectAtIndex:3];
        }

        cell.data.text = [tableData objectAtIndex:indexPath.row];

        return cell;
    }

    if (indexPath.section == 1)
    {
        static NSString *CellIdentifier = @"Password";
        static NSString *Cellnib = @"AccountViewCell";

        AccountViewCell *cell = [tableView2 dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil) {

            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:Cellnib owner:self options:nil];
            cell = (AccountViewCell *)[nib objectAtIndex:4];
        }

        cell.data.text = [tableData objectAtIndex:indexPath.row];

        return cell;
    }

    return 0;
}

ユーザーはテキストを入力できますが、キーボードを非表示にすることはできません。

また、AccountViewCell でキーボードを非表示にするメソッドを作成しました。

- (void)textfieldInput
{
    UIToolbar* padToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
    padToolBar.barStyle = UIBarStyleBlackTranslucent;

    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]
                                   initWithTitle:@"Done"
                                   style:UIBarButtonItemStyleDone
                                   target:self
                                   action:@selector(doneWithPad)];
    [doneButton setWidth:65.0f];

    padToolBar.items = [NSArray arrayWithObjects:
                        [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelPad)],
                        [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                        doneButton,
                        nil];

    [padToolBar sizeToFit];
    textField.inputAccessoryView = padToolBar;

}

しかし、cellForRowAtIndexPath で呼び出すと、機能しません。

AccountViewCell* keyboard = [[AccountViewCell alloc] init];
[keyboard textfieldInput];

完了キーが押されたときにキーボードを非表示にする方法があるかどうか疑問に思っています。私のアプリケーションのスクリーンショットは次のとおりです。

キーボードが消えない

4

4 に答える 4

1

UITextFeildDelegate#.hファイルにメソッドを含める

提供[textfeild setDelegate:self];

[textField setReturnKeyType:UIReturnKeyDone];

含む

- (BOOL)textFieldShouldReturn:(UITextField *)textField
 {
[textField resignFirstResponder];
 }
于 2013-02-25T16:56:28.570 に答える
1

完了ボタンのアクション メソッドで、次の 1 行のコードを使用します。

[myTextField resignFirstResponder];

于 2013-02-25T16:49:11.670 に答える
0

ヘッダーファイルにをインプリメントしてUITextViewDelegateから、テキストビューのデリゲートをデリゲートに設定する必要があります。多くの場合、これはすべて同じクラスファイルで行うため、次のことができます。

aTextField.delegate = self;

デリゲートが設定されると、適切なデリゲートメソッドを使用できます。

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textView resignFirstResponder];
} 
于 2013-02-25T16:57:07.173 に答える
0

.xibファイルでUITextFieldを接続するときは、宛先をDidEndOnExitに接続します。

于 2013-02-26T01:04:30.397 に答える