我正在Xcode 5.0.2上测试一个简单的应用程序。使用storyboard,我拖动了两个由segue连接的视图控制器。在第一个视图控制器上有一个按钮,按下该按钮后,下一个控制器出现,其中有两个文本字段。当我点击文本字段时,键盘没有显示,文本光标丢失。
textFieldViewController.h文件
@property (weak, nonatomic) IBOutlet UITextField *nameField;
@property (weak, nonatomic) IBOutlet UITextField *numberField;
- (IBAction)textFieldDoneEditing:(id)sender;
- (IBAction)backgroundTap:(id)sender;
textFieldViewController.m文件
- (IBAction)textFieldDoneEditing:(id)sender {
[sender resignFirstResponder];
}
- (IBAction)backgroundTap:(id)sender {
[self.nameField resignFirstResponder];
[self.numberField resignFirstResponder];
}
截图
答案 0 :(得分:12)
由于模拟器设置,Xcode 6 / iOS 8也会发生这种情况:
答案 1 :(得分:2)
确保UserInteraction
UITextfield
Enabled
为{{1}}且您的文本字段中没有任何视图。
答案 2 :(得分:0)
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{//Text Field Delegate
[textField resignFirstResponder];
return TRUE;
}
可以尝试这个并使用storyboard
设置textFields委托或使用
- (void)viewDidLoad
{
nameField.delegate = self;
numberField.delegate = self;
}
在textFieldViewController.h文件中
更改为@interface textFieldViewController : UIViewController <UITextFieldDelegate>
答案 3 :(得分:0)
我遇到过这个问题,在我的情况下,我有一个自定义视图,可以根据需要显示各种子视图。一切都很好,直到iOS 7.1发布。
所以我创建了一个UITextField,当(第一种情况)我的视图即将被添加为子视图时(第二种情况)视图被初始化(initWithFrame:方法)。我已经看到很多解决方案,其中响应链被修改或色调颜色改变。但在我的情况下,我通过这一件事得到了正常的行为:
我将UITextField的初始化代码放入lazy-getter并安排了此方法的延迟调用。
-(UITextField*)textField {
if (!_tf) {
_tf = [[UITextField alloc] initWithFrame:self.bounds]
// (... more code to set up the text field ...)
[self addSubview:_tf];
}
return _tf;
}
然后,(我已经覆盖了这个方法,所以我决定在这里调用它):
-(void)didMoveToSuperview {
[super didMoveToSuperview];
if (self.superview) {
// (... other code ...)
[self performSelector:@selector(textField) withObject:nil afterDelay:0.04];
}
}
它对我有用。