2015-09-17 59 views
3

我需要执行一个不屑一顾的键盘(向下滑动忽略),就像iOS上股票消息应用程序中的那个一样。不能移动键盘视图iOS9 swift

我有这样的代码来获取键盘观点:

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似乎键盘保持不变,所以我不能移动它。 也许有人遇到同样的问题,可以帮助我。 谢谢。

回答

5

在iOS 9中,有一个名为UIRemoteKeyboardWindow的键盘的新窗口,因此当您使用accessoryView.superview时,您将看到错误的视图。

为了得到正确的观点尝试从窗口直接层次发现: (Objective-C代码)

-(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; 
} 

附:取自DAKeyboardControl https://github.com/danielamitay/DAKeyboardControl/pull/98

+0

感谢这帮了我。这会干扰应用提交吗? – kevinl

+0

是的,它会的。这使用私有API,您冒着被拒绝的风险。 – DZenBot

相关问题