关闭具有多个文本字段的第一响应者/键盘
Posted
技术标签:
【中文标题】关闭具有多个文本字段的第一响应者/键盘【英文标题】:Dismissing the First Responder/Keyboard with multiple Textfields 【发布时间】:2011-07-19 03:19:30 【问题描述】:经历过这件事后,真的很喜欢......
Easy way to dismiss keyboard?
...我有多个TextFields
和一些TextViews
。有没有办法为所有文本字段设置批次或组 Dismiss First Responder?我需要为每个字段制作方法吗?也许我忽略了该链接中的某些内容?
也许我可以这样做:
https://***.com/questions/3282837/problem-with-multiple-textfields-to-make-the-keyboard-dissapear
后者有意义吗?提前致谢。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -=-=-
我想通了……
Controller.h
@interface Controller : UIViewController <UITextFieldDelegate>
IBOutlet UITextField *clickedDone;
@property (nonatomic, retain) IBOutlet UITextField *clickedDone;
Controller.m
#import "Controller.h"
@implementation Controller
@synthesize clickedDone;
- (void)viewDidLoad
[super viewDidLoad];
[clickedDone setDelegate:self];
- (BOOL)textFieldShouldReturn:(UITextField *)textField
[textField resignFirstResponder];
return YES;
【问题讨论】:
只有一个字段是第一响应者,您只需辞职那个。 另一个 SO 问题的链接已失效。 【参考方案1】:视图有一个可以使用的endEditing:
方法。文档说
使视图(或其嵌入的文本字段之一)放弃第一响应者状态。
在您的视图控制器中,您可以调用:
[[self view] endEditing:YES];
【讨论】:
谢谢!你的解决方案是最好的,特别是当有很多领域需要处理时。 这是最好的解决方案。谢谢!【参考方案2】:clickedDone.returnKeyType = UIReturnKeyDone; // in viewDidLoad
- (BOOL)textFieldShouldReturn:(UITextField *)textField
[textField resignFirstResponder];
return YES;
【讨论】:
【参考方案3】:现在很容易。您可以根据您的用例采用不同的方法。就我而言,我在 UITableViewController 中有多个文本字段。我所做的是这样的:
- (void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:animated];
[self.view endEditing:YES];
【讨论】:
【参考方案4】:最佳答案是:
-
为您的视图控制器 @interface 添加了 UITextFieldDelegate 协议
视图控制器:UIViewController
在您的 xib 中,在右侧的 Ulitlites 部分中选择 textField
“连接检查器”小节中 XCode 的侧窗格,
将 textField 的委托与 .xib 的“文件所有者”链接起来。
在您的 Viewcontroller 实现中,包括以下内容
- (BOOL)textFieldShouldReturn:(UITextField *)textField
[textField resignFirstResponder];
return YES;
【讨论】:
以上是关于关闭具有多个文本字段的第一响应者/键盘的主要内容,如果未能解决你的问题,请参考以下文章
如何使第一个文本输入成为第一响应者并使用 Eureka 表单显示键盘?