首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制隐藏键盘/ resignFirstResponder

强制隐藏键盘/ resignFirstResponder
EN

Stack Overflow用户
提问于 2011-11-25 21:34:44
回答 4查看 1.7K关注 0票数 3

我正在开发一个应用程序,它的每个单元格的右侧都有一个带有textFieldtableView (有20多个单元格)。我已经为除最后一行之外的每一行创建了自定义单元格。最后一行只有一个按钮。

现在,我想在单击按钮时调用resignFirstResponder

我该怎么做请帮忙?

EN

回答 4

Stack Overflow用户

发布于 2011-11-25 22:02:54

您必须跟踪哪个文本字段在哪个单元格中有第一个响应器,并像这样重新签署它。

代码语言:javascript
复制
[myCellTextField resignFirstResponder];
票数 2
EN

Stack Overflow用户

发布于 2011-11-25 22:11:01

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

代码语言:javascript
复制
- (void)textFieldDidBeginEditing:(UITextField *)textField {
    currentTextField = [textField retain];
}

然后,在按钮的操作中运行[currentTextField resignFirstResponder]

票数 2
EN

Stack Overflow用户

发布于 2011-11-26 00:56:03

Aopsfan的答案可能是到目前为止最好的解决方案。但是,要添加该对象(因为我无法发表评论),请记住释放该对象:

代码语言:javascript
复制
- (void)textFieldDidBeginEditing:(UITextField *)textField {
    if (currentTextField != nil) {
        [currentTextField release];
    }
    currentTextField = [textField retain];
}

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

ViewController.h

代码语言:javascript
复制
@property (nonatomic, retain) UITextField* currentTextField;

ViewController.m

代码语言:javascript
复制
@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];
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8269912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档