从 WKWebView 实例内部检测事件
Detect events from inside a WKWebView instance
我知道如何检测 Swift
中显示的普通键盘,但我想知道是否可以检测 WKWebView
中的事件,因为...如果应用程序进入背景,输入失去焦点,但未触发 "blur" 事件。
我的想法是,我在应用程序中有一个 "navigation bar",当显示键盘时,它会被推出视图(向上),我想继续显示它。知道键盘大约 216px
高我只想通过 216px
缩小 content wrapper
的高度 flex based
但这并没有真正起作用,因为它是一个动画我无法真正重现,所以它很流畅。我也无法检测到用户何时进入 emoji
选项卡。我摆脱了 autocorrect
因为我只是将 input
标签设置为 off
。
试试这个代码。
override viewWillAppear(){
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide"), name:UIKeyboardWillHideNotification, object: nil);
}
func keyboardWillHide(){
navigationController?.setNavigationBarHidden(false, animated: true)
}
func keyboardWillShow(notification: NSNotification) {
navigationController?.setNavigationBarHidden(true, animated: true)
var info = notification.userInfo!
var keyboardFrame: CGRect = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
// handle your layout according to frame
}
我知道如何检测 Swift
中显示的普通键盘,但我想知道是否可以检测 WKWebView
中的事件,因为...如果应用程序进入背景,输入失去焦点,但未触发 "blur" 事件。
我的想法是,我在应用程序中有一个 "navigation bar",当显示键盘时,它会被推出视图(向上),我想继续显示它。知道键盘大约 216px
高我只想通过 216px
缩小 content wrapper
的高度 flex based
但这并没有真正起作用,因为它是一个动画我无法真正重现,所以它很流畅。我也无法检测到用户何时进入 emoji
选项卡。我摆脱了 autocorrect
因为我只是将 input
标签设置为 off
。
试试这个代码。
override viewWillAppear(){
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide"), name:UIKeyboardWillHideNotification, object: nil);
}
func keyboardWillHide(){
navigationController?.setNavigationBarHidden(false, animated: true)
}
func keyboardWillShow(notification: NSNotification) {
navigationController?.setNavigationBarHidden(true, animated: true)
var info = notification.userInfo!
var keyboardFrame: CGRect = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
// handle your layout according to frame
}