点击 UITextField 时既不显示键盘也不显示光标

Posted

技术标签:

【中文标题】点击 UITextField 时既不显示键盘也不显示光标【英文标题】:Neither keyboard nor cursor are appearing when a UITextField is tapped 【发布时间】:2014-03-16 16:09:43 【问题描述】:

我正在 Xcode 5.0.2 上测试一个简单的应用程序。使用故事板,我拖动了两个通过 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];

截图

【问题讨论】:

您是否将textFieldDoneEditing: 方法连接到您的textView?如果是意味着什么是控制状态? 您是否从情节提要中将您的 viewController(例如 XYZViewController)类设置为 viewController 的身份检查器 @iMani on DidEndonExit @hellosheikh - 试试这个 - 似乎你打开了自动布局并将其关闭或 - 转到编辑器 -> 解决自动布局问题 -> 清除约束或更新框架 谢谢你很抱歉仍然没有出现键盘 【参考方案1】:

由于模拟器设置,Xcode 6/ios 8 也可能发生这种情况:

Xcode 6: Keyboard does not show up in simulator

【讨论】:

【参考方案2】:

确保您的UITextfield 中的UserInteractionEnabled,并且您对文本字段没有任何视图。

【讨论】:

用户交互已启用,没有视图 您的情节提要是否启用了特定的 UITextField?或者你可以像下面这样以编程方式设置它: UITextField *txtfld=[[UITextField alloc]init]; txtfld.userInteractionEnabled=YES; txtfld.enabled=YES; 您可以将 uitextfield 直接拖放到该视图而无需任何代码和连接并检查发生了什么吗? 是的,我试过了,但是这个新的文本框也没有显示还没有代码的键盘 在你的主视图控制器或第一个屏幕上运行相同的东西吗?【参考方案3】:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
//Text Field Delegate

     [textField resignFirstResponder];

    return TRUE;

你可以试试这个并使用情节提要设置 textFields 委托

或使用

- (void)viewDidLoad

  nameField.delegate = self;
  numberField.delegate = self;

textFieldViewController.h 文件中的一个

更改为@interface textFieldViewController : UIViewController <UITextFieldDelegate>

【讨论】:

感谢您的回答,但仍然无效。我一直点击文本字段,但没有任何反应 你注意到我的编辑了吗?您是否正确实现了与情节提要的 IBOutlet 连接 是的,我注意到了,我认为我正确地实现了它..让我给你看屏幕截图 我已经更新了我的问题..看看我附上的图片 你能添加一个从右边的代表到左边的文本字段的连接【参考方案4】:

我遇到过这个问题,就我而言,我有一个自定义视图,可以按需显示各种子视图。一切都很好,直到 iOS 7.1 发布。

因此,当(第一种情况)我的视图即将添加为子视图以及(第二种情况)视图被初始化(initWithFrame:方法)时,我正在创建一个 UITextField。我见过很多修改响应链或改变色调的解决方案。但就我而言,我的东西只在这件事上表现正常:

我将 UITextField 的初始化代码放入一个惰性获取器中,并安排了对该方法的延迟调用。

-(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];
    

它对我有用。

【讨论】:

以上是关于点击 UITextField 时既不显示键盘也不显示光标的主要内容,如果未能解决你的问题,请参考以下文章

点击 UITextField 时如何阻止键盘显示?

点击另一个 UITextField 后自动禁用键盘

如何在uitextfield或按钮之外点击退出键盘

点击 UITextField 在 UITableView 中显示数据

UITextField 提示时键盘不显示

当点击 UITextField 时,加载 nib 文件以充当自定义键盘