iOS 进阶 第六天(0402)

0402

通知和代理的区别
  • 代理是一对一的,只能是调用实现了协议里的方法,对象作为实现了该方法才能执行方法
  • 通知是多对多,它是通过通知中心分发
  • 通知要及时移除,如果不及时移除可能会收到多次通知,就好像C#中的事件注册多次一样.也可能(通知中心不会保留被通知的对象)是被通知的对象已经销毁,但通知中心仍保留这个通知继续通知造成野指针错误,应用可能会崩溃.
  • 同时的添加和移除很容易和KVO混在一起,只要注意addObserver和removeObserver的时候不选择forKeyPath就可以了.

下图是个代码实例:

移除通知:注意KVO


键盘通知
  • UIDevice的一些通知,如下图:

    

  • 键盘通知

    


文本框的处理

问题1:在文本框UITextView里,光标默认贴靠在最左端,又是需要让光标离开一些距离,此时该怎么办呢?

答:UITextView没有UIEdgeInset属性,所以不能通过设置内边距来设定.UITextView有个leftView成员,再配合leftViewModel为UITextFieldViewModelAlways,这样就可以放一个有宽度没背景色的UIView就可以了.

问题2:既然出现了文本框,则键盘弹出右下角的文字标识肯能就要改一改,该如何改呢?

答:每个文本框UITextView都有一个ReturnKey的属性,在那里可以设置.如果要改成自己想要的问题则需要其他知识准备. 注意:UITextView还有一个Auto-enbale Retuen Key的属性,用来决定键盘右下角按钮的可用性.

问题3:如何监听文本框UITextView的回车事件

答:使用代理,如下图:

设置键盘弹出QQ聊天窗口背景色方法


键盘弹出和收起的高度处理就要参考这个 QQ聊天06-键盘处理

posted @ 2016-01-09 17:35  Andy.Li  阅读(176)  评论(0编辑  收藏  举报