强行隐藏键盘/ resignFirstResponder

时间:2011-11-25 13:34:44

标签: iphone objective-c cocoa-touch uitextfield uikeyboard

我正在开发一个应用程序,其每个单元格的右侧有一个tableView textField(有超过20个单元格)。 我为每一行创建了自定义单元格,除了最后一行。 在最后一行只有一个按钮。

现在我想在按钮的点击上拨打resignFirstResponder 我该怎么办请帮帮忙?

4 个答案:

答案 0 :(得分:2)

您必须跟踪哪个单元格中哪个单元格具有第一响应者并将其重新签名。

[myCellTextField resignFirstResponder];

答案 1 :(得分:2)

您可能希望使用键盘跟踪文本字段。在控制器中实现<UITextFieldDelegate>协议,并将控制器设置为每个文本字段&#39;与会代表。像这样写textFieldDidBeginEditing:方法,设置一个名为currentTextField的实例变量:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    currentTextField = [textField retain];
}

然后,在按钮运行[currentTextField resignFirstResponder]

的操作中

答案 2 :(得分:1)

Aopsfan的回答可能是迄今为止最好的解决方案。但是,要添加它(因为我不能发表评论),请记住解除分配对象:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    if (currentTextField != nil) {
        [currentTextField release];
    }
    currentTextField = [textField retain];
}

最好还是使用@ property和@synthesize,以便运行时可以为你做内存管理。

<强> [视图控制器] .H

@property (nonatomic, retain) UITextField* currentTextField;

<强> [ViewController中]的.m

@synthesize currentTextField = _currentTextField;

- (void)viewDidLoad|Appear {
    self.currentTextField = nil;
}

- (void) dealloc {
    [_currentTextField release], _currentTextField = nil;
    ...
    [super dealloc];
}

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    self.currentTextField = textField;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.currentTextField) {
        [self.currentTextField resignFirstResponder];
    }
}

答案 3 :(得分:0)

我认为此链接可以帮助您:

Objective C: ResignFirstResponder with a button

提供一些代码,以便更容易帮助你。

希望这会对你有所帮助。 :)