无法移动键盘视图iOS9 swift
Posted
技术标签:
【中文标题】无法移动键盘视图iOS9 swift【英文标题】:Can't move keyboard view iOS9 swift 【发布时间】:2015-12-14 10:24:24 【问题描述】:我需要像 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 上似乎键盘固定到位有点不同,所以我无法移动它。 也许有人遇到同样的问题,可以帮助我。 谢谢。
【问题讨论】:
【参考方案1】:在 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
【讨论】:
感谢这帮助了我。这会干扰应用提交吗? 是的,它会的。这使用私有 API,您的应用可能会被拒绝。以上是关于无法移动键盘视图iOS9 swift的主要内容,如果未能解决你的问题,请参考以下文章
点击文本字段时用选择器视图替换键盘(Swift、Storyboard、iOS 9、Xcode 7)
当使用 Swift 出现键盘时如何向上移动 UIViewController 的内容