首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iPhone键盘、Done按钮和resignFirstResponder

iPhone键盘、Done按钮和resignFirstResponder
EN

Stack Overflow用户
提问于 2010-05-14 01:18:28
回答 3查看 110.4K关注 0票数 51

这可能是一个愚蠢的问题,但我在文档中找不到答案。弹出键盘上的“完成”按钮是否总是导致键盘消失?我在网络上看到了很多这样的代码:

代码语言:javascript
复制
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    [theTextField resignFirstResponder];
    return YES;
}

当我按下“完成”按钮时,键盘向下弹出,UITextField退出first responder。

我假设按下“完成”按钮不会导致UITextFieldresignFirstResponder,但这种行为在一段时间内发生了变化。

我正在OS 3.0 - 3.1.3上调试

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-14 05:09:45

我用一个UITextField和下面的代码做了一个小的测试项目

代码语言:javascript
复制
#import <UIKit/UIKit.h>
@interface TextFieldTestViewController : UIViewController
<UITextFieldDelegate>
{
    UITextField *textField;
}
@property (nonatomic, retain) IBOutlet UITextField *textField;
@end

#import "TextFieldTestViewController.h"
@implementation TextFieldTestViewController
@synthesize textField;

- (void)viewDidLoad
{
    [self.textField setDelegate:self];
    [self.textField setReturnKeyType:UIReturnKeyDone];
    [self.textField addTarget:self
                  action:@selector(textFieldFinished:)
        forControlEvents:UIControlEventEditingDidEndOnExit];
    [super viewDidLoad];
}
- (IBAction)textFieldFinished:(id)sender
{
    // [sender resignFirstResponder];
}

- (void)dealloc {
    [super dealloc];
}
@end

文本字段是一个未修改的UITextField,它被拖到NIB上,插座已连接。

加载应用程序后,在文本字段中单击将弹出键盘。按下“完成”按钮会使文本字段失去焦点,并使键盘显示动画效果。请注意,网络上的建议是始终使用[sender resignFirstResponder],但这在没有它的情况下也有效。

票数 93
EN

Stack Overflow用户

发布于 2013-03-29 19:13:34

完成按钮的一行代码:-

代码语言:javascript
复制
[yourTextField setReturnKeyType:UIReturnKeyDone];

并在TextField的valueChanged上添加操作方法,并添加以下行-

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

Stack Overflow用户

发布于 2019-03-13 16:15:12

我使用此方法更改了文本字段的选择

代码语言:javascript
复制
- (BOOL)textFieldShouldReturn:(UITextField *)textField {

if ([textField isEqual:self.emailRegisterTextField]) {

    [self.usernameRegisterTextField becomeFirstResponder];

} else if ([textField isEqual:self.usernameRegisterTextField]) {

    [self.passwordRegisterTextField becomeFirstResponder];

} else {

    [textField resignFirstResponder];

    // To click button for registration when you clicking button "Done" on the keyboard
    [self createMyAccount:self.registrationButton];
}

return YES;

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2828826

复制
相关文章

相似问题

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