如何使键盘返回完成按钮

时间:2013-02-25 16:44:45

标签: ios objective-c xcode uikeyboard custom-cell

我创建了一个包含文本字段的自定义单元格。当用户按下完成按钮时,我希望键盘消失(如下面的屏幕截图所示)。

自定义单元格位于" 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];

我想知道在按下完成键时是否有隐藏键盘的方法。我的申请截图如下:

keyboard does not disappear

4 个答案:

答案 0 :(得分:1)

在完成按钮的操作方法中,使用以下一行代码:

[myTextField resignFirstResponder];

答案 1 :(得分:1)

#。h文件中的Inlucde UITextFeildDelegate方法

提供[textfeild setDelegate:self];

[textField setReturnKeyType:UIReturnKeyDone];

包括

- (BOOL)textFieldShouldReturn:(UITextField *)textField
 {
[textField resignFirstResponder];
 }

答案 2 :(得分:0)

您必须在头文件中添加UITextViewDelegate,然后将文本视图的委托设置为您的委托。通常你会在同一个类文件中完成所有这些,所以你可以做到

aTextField.delegate = self;

设置委托后,您可以使用适当的委托方法:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textView resignFirstResponder];
} 

答案 3 :(得分:0)

在.xib文件中连接UITextField时,请将目标连接到DidEndOnExit。