我需要实现一个拒绝键盘(向下滑动以拒绝),就像 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时,您将得到错误的视图。
要获得正确的视图,请尝试直接从窗口层次结构中找到它:
(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;
}
附:取自 DAKeyboardControlhttps://github.com/danielamitay/DAKeyboardControl/pull/98
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)