【问题标题】:Keyboard for textfield appears after second tap (time to time)第二次点击后出现文本字段的键盘(不时)
【发布时间】:2016-05-06 09:18:45
【问题描述】:

我的应用中有一个视图,其中有 1 个文本字段。而且我注意到第二次点击后会出现键盘。

但有趣的是,在 iPhone 上有时会出现(有时会在第一次点击后出现,有时仅在第二次点击后出现)。 在 iPad 上,它似乎只在第二次点击后才会出现。

  • 我用UITextFieldDelegate

  • viewDidLoad 中我分配了代理_locationTextField.delegate = self;

  • 我使用委托方法textFieldDidBeginEditingtextFieldDidEndEditingtextFieldShouldReturn

例如:

#pragma mark -
#pragma mark UITextFieldDelegate

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    _locationNameBeforeManualEdit = _locationTextField.text;
    // save the previod city value to compare after did end editing
    NSLog(@"textFieldDidBeginEditing");

}

- (void)textFieldDidEndEditing:(UITextField *)textField{
    NSLog(@"textFieldDidEndEditing");

}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [self continueButtonPressed:nil];
    // [textField resignFirstResponder];
    return YES;
}

在故事板中

可能是什么问题?

【问题讨论】:

  • 你实现了UITextFieldDelegate的其他方法吗?你的方法执行了吗?
  • 如果您使用 Storyboard?
  • 在控制台中,我看到所有 3 种方法都已执行。代码中只有这 3 个方法(如上所述)。没有从情节提要处理任何事件。
  • 看起来它与 iPad 更相关 - 即使在第 3 次/第 4 次点击之后,键盘也会出现在它上面。在 iPhone 上,键盘通常会立即出现,并且很少在第二次点击后出现。无法弄清楚这可能是原因)

标签: ios objective-c keyboard uitextfielddelegate


【解决方案1】:

在 Stackoverflow 上找到解决方案 - 与键盘预加载相关的解决方案:

- (void)preloadKeyboard {
    UITextField *lagFreeField = [[UITextField alloc] init];
    [self.window addSubview:lagFreeField];
    [lagFreeField becomeFirstResponder];
    [lagFreeField resignFirstResponder];
    [lagFreeField removeFromSuperview]; 
}

这个方法应该用在AppDelegateapplication: didFinishLaunchingWithOptions:方法中。

【讨论】:

    猜你喜欢
    • 2018-07-01
    • 2018-01-06
    • 2017-08-14
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2015-09-28
    相关资源
    最近更新 更多