No se puede mover la vista del keyboard iOS9 swift

Necesito implementar un keyboard despectivo (deslizando hacia abajo para descartar) como el que se encuentra en la aplicación de posts de stock en iOS.

Tengo este código para get la vista del keyboard:

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

Y conecté el UIPanGestureRecognizer de tableView para detectar cuándo necesito comenzar a mover el keyboard hacia abajo.

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

El método funcionó bien con iOS 8 pero con iOS 9 parece que el keyboard se mantiene en su lugar un poco diferente, así que no puedo moverlo. Tal vez alguien encontró el mismo problema y puede ayudarme. Gracias.

En iOS 9 hay una nueva window para el keyboard denominada UIRemoteKeyboardWindow, por lo que cuando está utilizando accessoryView.superview obtendrá una vista incorrecta.

Para get una vista correcta, intente encontrarlo directamente desde la jerarquía de window: (código objective-c)

 -(UIView*)getKeyboardInputView { if([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) { for(UIWindow* window in [[UIApplication shanetworkingApplication] 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 Tomado de DAKeyboardControl https://github.com/danielamitay/DAKeyboardControl/pull/98