【问题标题】:Invisible keyboard when app becomes active after TouchIDTouchID 后应用程序变为活动状态时键盘不可见
【发布时间】:2017-04-22 04:52:26
【问题描述】:

我有一个安全控制器,可以在应用激活时触发 Touch ID。如果用户取消 Touch ID 框,则会显示一个键盘以输入数字代码。但是我的键盘已加载(inputAccessoryView 绘制在良好的位置)但不可见。我需要在键盘上显示应用程序的背景和前景。

我试过这个不起作用的解决方案:Super slow lag/delay on initial keyboard animation of UITextField

if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) {
    [myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:myLocalizedReasonString
    reply:^(BOOL success, NSError *error) {
        if (success) {
            dispatch_async(dispatch_get_main_queue(), ^{
                NSLog(@"User authenticated successfully, take appropriate action");
            });
        } else {
            NSLog(@"User did not authenticate successfully, look at error and take appropriate action");

            dispatch_async(dispatch_get_main_queue(), ^(void){
                [self._fieldSecurity becomeFirstResponder];
            });
        }
    }];
} else {
    NSLog(@"Could not evaluate policy; look at authError and present an appropriate message to user");
    dispatch_async(dispatch_get_main_queue(), ^{
        [self._fieldSecurity becomeFirstResponder];
    });
}

【问题讨论】:

  • 您的代码似乎没问题。问题似乎在其他地方,你能再分享一些代码吗?
  • 即使我也遇到过同样的问题,到现在还没有找到解决方案。
  • @NikhilManapure JamesChen 解决方案有效,即使它不是一个完美和明确的解决方案!
  • 非常感谢您和@James Chen 的修复。

标签: ios uitextfield ios10 uikeyboard


【解决方案1】:

作为临时修复,延迟调用becomeFirstResponder(使用dispatch_after)但仍在主队列中。

我对这个问题的猜测是,TouchID 视图位于应用程序正常窗口之外的另一个窗口上。当用户取消 TouchID 身份验证时,TouchID 窗口仍然是关键窗口,因此在下面的窗口中调用您的UITextField 会弹出键盘出现一些问题。但正如我所说,这只是一个猜测。

更新代码:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^(void){
    // Pop the keyboard
});

【讨论】:

  • 它的作品......现在,我会尝试更深入地调试!感谢您的修补程序:)
  • 在 Touch ID 密码取消事件后,它仍然无法在我的 iPhone 7 Plus 中工作,dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.33 * NSEC_PER_MSEC)), dispatch_get_main_queue(), ^{ [fakeField becomeFirstResponder]; });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多