键盘显示时使用interactivePopGestureRecognizer的问题

时间:2013-12-03 06:55:09

标签: objective-c ios7 keyboard

This is Screenshot

在视图B中,当显示键盘并使用interactivePopGestureRecognizer将viewController弹出到View A时,键盘仍然保留在此处:(

如何让键盘随着视图B移动? (如iMessage或Facebook Messenger)

ps:我尝试获取键盘视图并添加到self.view,它很有用,但我认为这不是一个好方法。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardDidShown)
                                             name:UIKeyboardDidShowNotification object:nil];

- (void)keyboardDidShown
{
    UIView * keyboardView = self.textView.inputAccessoryView.superview;
    [self.view addSubview: keyboardView];
}

2 个答案:

答案 0 :(得分:0)

您不会将keybordView添加到视图中。如果要显示UITextField / UITextView的键盘,请在该对象上调用becomeFirstResponder。在您的示例中,它应该是:

[self.textView becomeFirstResponder];

如果您想要隐藏键盘,请致电:

[self.textView  resignFirstResponder];

如果您想要在关闭ViewA之前隐藏键盘,则应在启动动画以显示ViewB时在interactivePopGestureRecognizer的开头调用它。 希望它有所帮助。

// EXTENDED

我不知道您为什么要尝试将accessoryView作为子视图添加到视图中

- (void)keyboardDidShown
{
    UIView * keyboardView = self.textView.inputAccessoryView.superview;
    [self.view addSubview: keyboardView];
}

我不明白你为什么要使用通知中心。 解除视图时键盘保留的功能(作为iMessage应用程序)是标准功能。 只需使用

[self.textView becomeFirstResponder];

当您想要显示键盘而不要调用

[self.textView  resignFirstResponder];

弹出视图控制器时。 iOS为您完成工作。

答案 1 :(得分:0)

试试这个解决方案:

https://github.com/cotap/TAPKeyboardPop

这是一个轻量级类别,可以相应地监听interactivePopGestureRecognizer手势和动画键盘。