【问题标题】:detect of iOS 8 quicktype keyboard is opened or closed without notification检测 iOS 8 quicktype 键盘打开或关闭而不通知
【发布时间】:2014-09-17 18:05:59
【问题描述】:

我让我们尝试在键盘上方显示自己,并且一旦打开键盘就不应移动。

我可以调整它的显示位置,但使用 quicktype 键盘我无法确定键盘的高度,除非我知道 quicktype 是打开还是关闭。有什么方法可以确定吗?

【问题讨论】:

标签: ios keyboard ios8


【解决方案1】:

您应该使用keyboardWillShow: 通知来调整其​​他视图框架。

通知会发布到keyboardWillShow:不仅在becomeFirstResponder 上针对文本视图/字段,而且在用户显示/隐藏快速类型键盘时也会发布。

一旦keyboardWillShow: 通知被发布,键盘的框架就可以被通知对象中的UIKeyboardFrameEndUserInfoKey 捕获。

textView 基于键盘调整其框架的示例:

- (void)keyboardWillShow:(NSNotification *)notification
{
  CGRect keyboardRect = [[[notification userInfo] valueForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
  NSTimeInterval duration = [[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
  UIViewAnimationCurve curve = [[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue];

  [UIView animateWithDuration:duration animations:^{

    [UIView setAnimationCurve:curve];
    self.textViewVisualEffectView.frame = CGRectMake(self.textViewVisualEffectView.origin.x, self.view.height - keyboardRect.size.height - self.textViewVisualEffectView.height, self.textViewVisualEffectView.width, self.textViewVisualEffectView.height);

  } completion:^(BOOL finished) {

  }];
}

【讨论】:

  • 此时在我的代码中键盘从未显示,因此没有通知。
  • 这并没有回答提问者关于键盘上方快速输入区域的问题。是的,启动时会捕获键盘大小,但启动时不包括快速输入区域。因此,当用户开始输入文本时,会显示快速输入区域。快速输入区域隐藏了部分屏幕。
猜你喜欢
  • 1970-01-01
  • 2018-07-22
  • 2016-02-20
  • 2019-01-07
  • 2013-12-20
  • 2015-10-23
  • 2017-12-21
  • 1970-01-01
  • 2012-01-26
相关资源
最近更新 更多