KeyboardObserver键盘事件处理
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 } } }
评论
Kibo键盘事件处理的JS库
Kibo是一个简单的用于处理键盘事件的Javascript工具库。这个Javascript类库的特点是,它不但能监听普通的按键事件,它还能监听组合键和功能键,例如Ctrl+C,Shift+w。还有一个
Kibo键盘事件处理的JS库
0
MTControlios 事件处理
MTControl给iOS的UIControl对象附加了类似jQuery风格的事件处理。示例代码:UIButton*button=[UIButtonbuttonWithType:UIButtonTyp
MTControlios 事件处理
0
Steady.js事件处理工具
Steady.js可实现无闪烁的onscroll事件处理,而不会有性能方面的损失。基本使用方法:<!DOCTYPE html><html><head> <t
Steady.js事件处理工具
0