iPhone键盘,完成按钮和resignFirstResponder

nev*_*ing 50 iphone keyboard cocoa-touch objective-c uikit

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

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    [theTextField resignFirstResponder];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

当我按下"完成"按钮时,键盘弹出并重新UITextField响应第一响应者.

我假定按"完成"按钮没用过引起UITextFieldresignFirstResponder,但这种行为在一段时间内改变.

我正在调试OS 3.0 - 3.1.3

nev*_*ing 92

我用一个UITextField和这个代码做了一个小测试项目

#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
Run Code Online (Sandbox Code Playgroud)

文本字段未经修改地UITextField拖动到NIB上,连接了插座.
加载应用程序后,单击文本字段会显示键盘.按"完成"按钮使文本字段失去焦点并激活键盘.请注意,网络上的建议是始终使用,[sender resignFirstResponder]但这没有它.


bic*_*ter 15

在Xcode 5.1中

启用完成按钮

  • 在故障板中的UITextField的属性检查器中,找到"返回键"字段并选择"完成"

按下完成后隐藏键盘

  • 在Storyboard中,使ViewController成为UITextField的委托
  • 将此方法添加到ViewController

    -(BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        [textField resignFirstResponder];
        return YES;
    }
    
    Run Code Online (Sandbox Code Playgroud)


bea*_*lex 6

从文档(任何版本):

您的应用程序有责任在您选择时关闭键盘.您可以关闭键盘以响应特定的用户操作,例如用户点击用户界面中的特定按钮.您还可以配置文本字段委托,以便在用户按下键盘上的"返回"键时关闭键盘.要关闭键盘,请将resignFirstResponder消息发送到当前第一个响应者的文本字段.这样做会导致文本字段对象结束当前编辑会话(委托对象的同意)并隐藏键盘.

所以,你必须以某种方式发送resignFirstResponder.但是,在处理textFieldShouldReturn:message时,textfield可能会失去其他方式.这也会导致键盘消失.