当前越来越多的iOS应用开始使用html进行交互显示,却会发现在UIWebView
弹出的键盘比UITextView
的键盘多出了左右移动以及完成按钮,那么如何去掉这些我们并不需要的按钮呢?苹果官方并没有给出方法,所以我们只能够自己来解决。
对于不同的iOS版本,我们的处理方法也会不同,因为官方没有提供方法,所有的方法都是需要自己去发现和修改。这里只写出iOS7以上版本的方法:
func hideKeyBoard() -> Void {
for window in UIApplication.sharedApplication().windows {
if !window.isMemberOfClass(UIWindow.self) {
let keyboardWindow = window
if #available(iOS 9.0, *) {
self.removeAccessoryBarForiOS9(keyboardWindow as UIView)
} else if #available(iOS 8.0, *) {
self.removeAccessoryBarForiOS8(keyboardWindow as UIView)
} else {
self.removeAccessoryBarForiOS7(keyboardWindow as UIView)
}
}
}
if #available(iOS 9.0, *) {
self.removeAccessoryBarForiOS9(UIApplication.sharedApplication().windows.last! as UIView)
}
}
func removeAccessoryBarForiOS9(keyboardWindow:UIView) -> Void {
for possibleFormView:UIView in keyboardWindow.subviews {
if possibleFormView.isMemberOfClass(NSClassFromString("UIInputSetContainerView")!) {
for subviewOfInputSetContainerView in possibleFormView.subviews {
if subviewOfInputSetContainerView.isMemberOfClass(NSClassFromString("UIInputSetHostView")!) {
for subviewOfInputSetHostView in subviewOfInputSetContainerView.subviews {
// 隐藏工具条NSClassFromString
if subviewOfInputSetHostView.isMemberOfClass(NSClassFromString("UIWebFormAccessory")!) {
subviewOfInputSetHostView.layer.opacity = 0
subviewOfInputSetHostView.frame = CGRectZero
} else if (subviewOfInputSetHostView.isMemberOfClass(NSClassFromString("_UIR