KeyboardObserver 是为了处理不太复杂的键盘事件。
处理不太复杂的键盘事件。
不是使用 NSNotification
,而是使用 event。
不用 KeyboardObserver.swift
let keyboardNotifications = [ UIKeyboardWillShowNotification, UIKeyboardWillHideNotification, UIKeyboardWillChangeFrameNotification ] override func viewDidLoad() { super.viewDidLoad() } override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) keyboardNotifications.forEach { NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardEventNotified:", name: $0, object: nil) } } override func viewWillDisappear(animated: Bool) { super.viewWillDisappear(animated) keyboardNotifications.forEach { NSNotificationCenter.defaultCenter().removeObserver(self, name: $0, object: nil) } }func keyboardEventNotified(notification: NSNotification) { guard let userInfo = notification.userInfo else { return } let keyboardFrameEnd = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue() let curve = UIViewAnimationOptions(rawValue: UInt(userInfo[UIKeyboardAnimationCurveUserInfoKey] as! NSNumber)) let duration = NSTimeInterval(userInfo[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber) let distance = UIScreen.mainScreen().bounds.height - keyboardFrameEnd.origin.y let bottom = distance >= bottomLayoutGuide.length ? distance : bottomLayoutGuide.length UIView.animateWithDuration(duration, delay: 0.0, options: [curve], animations: { [weak self] () -> Void in self?.textView.contentInset.bottom = bottom self?.textView.scrollIndicatorInsets.bottom = bottom } , completion: nil) }
用 KeyboardObserver.swift
let keyboard = KeyboardObserver()override func viewDidLoad() { super.viewDidLoad() keyboard.observe { [weak self] (event) -> Void in guard let s = self else { return } switch event.type { case .WillShow, .WillHide, .WillChangeFrame: let distance = UIScreen.mainScreen().bounds.height - event.keyboardFrameEnd.origin.y let bottom = distance >= s.bottomLayoutGuide.length ? distance : s.bottomLayoutGuide.length UIView.animateWithDuration(event.duration, delay: 0.0, options: [event.curve], animations: { [weak self] () -> Void in self?.textView.contentInset.bottom = bottom self?.textView.scrollIndicatorInsets.bottom = bottom } , completion: nil) default: break } } }
键盘事件的种类 键盘事件由用户击打键盘触发,主要有keydown、keypress、keyup三个事件,它们都继承了KeyboardEvent接口。 keydown:按下键盘时触发。 keypress:按下有值的键时触发,即按下 Ctrl、Alt、Shift、Meta 这样无值的键,这个事件不会触发。对于有值的键,按下时先触发keydown事件,再触发这个事件。 keyup:松开键盘时触发该事件。
输入框接口 用于弹起输入框,供用户输入文字。可以通过注册监听函数进行监听用户的输入,监听完毕请及时调用注销方法,取消监听。 BK.UI.showKeyboard(Object) 显示输入框,弹出键盘 手Q版本:7.6.5 函数参数Object: 属性名 类型 是否必填 说明 deaultText string 否 默认要展示的字符串 complete Function 否 接口调用完成回调 示例:
我的代码是: 在上面的代码中,mBooleanLoginDone是一个布尔变量,指示用户是否登录。我希望快捷键Ctrl和T仅在用户成功登录时起作用,但现在我还没有登录,快捷键也起作用。我怎样才能解决它?有什么想法吗?
对于桌面游戏,一般需要通过键盘做一些游戏内的控制,这时你就需要监听键盘事件。Cocos2d-x 支持键盘事件,就像上节介绍的触摸事件一样。 创建键盘事件监听器: // creating a keyboard event listener auto listener = EventListenerKeyboard::create(); listener->onKeyPressed = CC_CALL
与响应鼠标事件相比,响应 Canvas 键盘事件没有那么直接,因为 Canvas 本身并不支持键盘事件的响应。我们需要耍一点小手段——在 Canvas 上添加一个支持键盘事件的其他对象。 本节的例程将在 7.2 节例程的基础上添加键盘响应事件。 html 部分变更的代码如下: //canvas_mk_event.html <canvas tabindex="0"></canvas>
如何处理软键盘和隐藏它使用appium Android。 以下是我的设想: 打开flipkart应用 点击搜索图标 键入一些文本[例如:汽车] 从设备键盘点击搜索图标 下面是我实现的代码: 我使用driver.rotate(屏幕定位。LANDSCAPE);"在代码中,但得到错误作为org.openqa.selenium.WebDriverExcture:一个未知的服务器端错误发生在处理命令。(警告
语法: driver.keyevent(keyCode) 1.键盘重要键 回车键(Enter) 66 空格键(Space) 62 Tab键(Tab) 61 退格键(Backspace) 67 2.手机实体键 Home键 3 返回键 4 电话键
ctrlKey 布尔值 (可选) - 是否使用ctrlKey触发事件 metaKey 布尔值 (可选) - 是否使用 metaKey触发事件 shiftKey 布尔值(可选) - 是否使用Shift 键触发事件 altKey 布尔值 (可选) - 是否使用Alt 键触发事件 triggeredByAccelerator 布尔值 (可选) - 是否使用快捷键触发事件而不是像鼠标点击之类的用户手势。