这可能是一个愚蠢的问题,但我在文档中找不到答案。弹出键盘上的“完成”按钮是否总是导致键盘消失?我在网络上看到了很多这样的代码:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[theTextField resignFirstResponder];
return YES;
}
当我按下“完成”按钮时,键盘向下弹出,UITextField
退出first responder。
我假设按下“完成”按钮不会导致UITextField
到resignFirstResponder
,但这种行为在一段时间内发生了变化。
我正在OS 3.0 - 3.1.3上调试
发布于 2010-05-14 05:09:45
我用一个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
文本字段是一个未修改的UITextField
,它被拖到NIB上,插座已连接。
加载应用程序后,在文本字段中单击将弹出键盘。按下“完成”按钮会使文本字段失去焦点,并使键盘显示动画效果。请注意,网络上的建议是始终使用[sender resignFirstResponder]
,但这在没有它的情况下也有效。
发布于 2013-03-29 19:13:34
完成按钮的一行代码:-
[yourTextField setReturnKeyType:UIReturnKeyDone];
并在TextField的valueChanged上添加操作方法,并添加以下行-
[yourTextField resignFirstResponder];
发布于 2019-03-13 16:15:12
我使用此方法更改了文本字段的选择
- (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;
}
https://stackoverflow.com/questions/2828826
复制相似问题