【问题标题】:Neither keyboard nor cursor are appearing when a UITextField is tapped点击 UITextField 时既不显示键盘也不显示光标
【发布时间】: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 - 试试这个 - 似乎你打开了自动布局并将其关闭或 - 转到编辑器 -> 解决自动布局问题 -> 清除约束或更新框架
  • 谢谢你很抱歉仍然没有出现键盘

标签: ios uitextfield


【解决方案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];
        }
    }
    

    它对我有用。

    【讨论】:

      猜你喜欢
      • 2020-03-02
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多