无法移动键盘快速查看iOS9

我需要实现一个轻视键盘(向下滑动解散),就像在iOS上的股票消息应用程序。

我有这个代码来获取键盘视图:

func keyboardWillShowWithNotification(notification:NSNotification) { let keyboardView = accessoryView.superview } 

而且我连接了tableView的UIPanGestureRecognizer来检测何时需要开始移动键盘。

 func handleTableViewPan(gr:UIPanGestureRecognizer) { let location = panGestureRecognizer.locationInView(self.view) let offset = ... //calculated correctly keyboardView.frame.origin.y = originalKeyboardFrame.origin.y + offset } 

这个方法在iOS 8下工作正常,但是在iOS 9中,键盘看起来有点不同,所以我不能移动它。 也许有人遇到同样的问题,可以帮助我。 谢谢。

在iOS 9中有一个名为UIRemoteKeyboardWindow的键盘的新窗口,所以当你使用accessoryView.superview时,你会看到一个错误的视图。

为了获得正确的视图,请直接从窗口层次结构中find它:(objective-c code)

 -(UIView*)getKeyboardInputView { if([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) { for(UIWindow* window in [[UIApplication sharedApplication] windows]) if([window isKindOfClass:NSClassFromString(@"UIRemoteKeyboardWindow")]) for(UIView* subView in window.subviews) if([subView isKindOfClass:NSClassFromString(@"UIInputSetHostView")]) for(UIView* subsubView in subView.subviews) if([subsubView isKindOfClass:NSClassFromString(@"UIInputSetHostView")]) return subsubView; } else { return accessoryView.superview; } return nil; } 

PS采取从DAKeyboardControl https://github.com/danielamitay/DAKeyboardControl/pull/98