Keyboard项目中观察者模式解析
Posted huang-t
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keyboard项目中观察者模式解析相关的知识,希望对你有一定的参考价值。
该项目旨在解决输入框多层嵌套的情况下软盘和输入框位置不适配的问题。
一、观察者模式实现原理
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当这个主题对象在状态发生变化时,会通知所有观察者对象,使得他们能够更新自己。在此项目中其实现原理主要体现在下几个操作:
-(void)addGlobalKeyboardObserver
为界面中所有的输入框添加键盘观察器,将监听器添加到事件源上,回车键监听,触控其他区域监听。实现当软盘弹出时自动控制输入框的显示位置以防止被软盘遮住,当触控输入框以外的位置时或按软盘的回车键时,软盘隐藏,界面恢复。
-(void)removeGlobalKeyboardObserver
为界面中所有的输入框移除键盘观察器。
-(void)addKeyboardObserver
为指定输入框添加键盘观察器,将监听器添加到事件源上,回车键监听,触控其他区域监听。实现当软盘弹出时自动控制输入框的显示位置以防止被软盘遮住,当触控输入框以外的位置时或按软盘的回车键时,软盘隐藏,界面恢复。
-(void)removeKeyboardObserver
为指定输入框移除键盘观察器。
-(void)addSimpleKeyboardObserver
为指定输入框添加键盘观察器,将监听器添加到事件源上,触控其他区域监听。实现当软盘弹出时自动控制输入框的显示位置以防止被软盘遮住,当触控输入框以外的位置时或按软盘的回车键时,软盘隐藏,界面恢复。
-(void)removeKeyboardObserver
为指定输入框移除键盘观察器。
-(void)registerKeyboardNotifications
事件源变化触发事件(具体主题角色状态改变,通知观察者)。
-(void)removeKeyboardNotifications
移除事件源的监听器,不再触发事件。
二、观察者模式的作用
1.当软盘弹出时自动控制输入框的显示位置以防止被软盘遮住。
2.当触控输入框以外的位置时或按软盘的回车键时,软盘隐藏,界面恢复。
3.支持对整个页面所有的输入框添加监听和移除监听。
4.支持对指定输入框的添加监听和移除监听。
5.使用简单,只需一行代码便可完成监听配置。
以上是关于Keyboard项目中观察者模式解析的主要内容,如果未能解决你的问题,请参考以下文章
java观察者模式代码,含答案解析
优雅代码14-guava精选方法及eventBus观察者模式源码解析
解析观察者模式在安卓程序中的应用——如何实现跨界面Handler通讯
设计模式 行为型模式 -- 观察者模式(发布-订阅(Publish/Subscribe)模式)
观察者模式解析
观察者模式解析