UITextField - resignFirstResponder 查询

Posted

技术标签:

【中文标题】UITextField - resignFirstResponder 查询【英文标题】:UITextField - resignFirstResponder Query 【发布时间】:2011-08-02 08:53:09 【问题描述】:

我有一个应用程序,其中有几个 UITextField 允许我的用户输入他们的年龄和另一个数值。理想情况下,我希望键盘在编辑 TextField 时调出数字小键盘。目前我将其设置为数字和标点符号只是为了使用“完成”按钮来关闭键盘,因为数字键盘没有完成按钮。

在尝试使用数字键盘时,我尝试通过点击主视图的背景将其设置为关闭。

-(IBAction)backgroundTapped:(id)sender;

我在头文件中创建了上述操作。

-(IBAction)backgroundTapped:(id)sender 
    [ageEntry resignFirstResponder];

我在我的实现文件中扩展了上述方法,告诉ageEntry TextField resignFirstResponder。我还将主视图更改为 UIControl 类,并通过 Interface Builder 将 buttonTapped 操作连接到相关警报。然而,当我触摸背景时,什么也没有发生。

有什么想法吗?

【问题讨论】:

您想在数字键盘中添加完成按钮吗? 理想情况下,id 就像数字键盘中的完成按钮一样,但这不在选项中。我希望能够点击我的背景来关闭键盘 【参考方案1】:

只需使用该方法检测 viewController 视图中的触摸

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    [urAgeField resignFirstResponder];
    [urOtherField resignFirstResponder];

并在此方法中退出键盘

【讨论】:

这看起来是一个更好的解决方案 +1。【参考方案2】:

一个更简单的方法是将inputAccessoryView 添加到您的文本字段。此输入附件视图可以是 UIToolbar,您的 Done 按钮只有一个 UITabBarButton

少了很多hack,看起来就像在Safari中用来关闭键盘的附件视图。

【讨论】:

【参考方案3】:

我遇到了类似的问题。这里是the solution..

已编辑

添加

- (void)viewDidLoad 

        [super viewDidLoad];
         UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                                    action:@selector(tap:)];
        tap.numberOfTapsRequired = 1;

        [self addGestureRecognizer:tap];




- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event

   [ageEntry resignFirstResponder];            

【讨论】:

感谢您的回复。但这本身并不是问题的解决方案,这是一个非常耗时的 hack。 你需要 IBOutlet UITextFiled *ageEntry;

以上是关于UITextField - resignFirstResponder 查询的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS8 中使用 UISearchBar 启用取消按钮

UITextField

在 UITextField 操作中将 UITextField 字符串转换为 Double

如何调整 UITextField 占位符文本以适合 UITextField 宽度?

如果添加了新的 UITextField,如何向下移动许多 UITextField

如果 UITextField 已经创建,不要在 Tap 上重新创建 UITextField