【QQ界面展示-实现自动回复 Objective-C语言】

一、刚才咱们监听键盘弹出事件,是怎么监听的,

通知

1.监听键盘弹出事件的步骤

1)首先,在控制器的viewDidLoad方法中,创建一个NotificationCenter对象啊

2)通过center,让当前控制器的这个方法,监听这个通知,

通知

3)然后,我们在这个通知里面,获取到键盘的Y值,

4)对我们的控制器的view,做了一次平移

2.注意,只要你监听了通知,

一定得怎么样,是不是一定得移除这个通知啊,

在什么时候、什么地方、移除这个通知

通知

谁监听了这个通知,就在哪个对象的dealloc方法中,移除

通知

现在,是谁监听这个通知,控制器

所以说,应该在控制器的什么方法里面,

在控制器的这个dealloc方法里面,在这个里面怎么办

通知

- (void)dealloc{

//移除通知

[NSNotificationCenter

通知
通知

[[NSNotificationCenter defaultCenter] removeObserver:(id)];

通知

把谁移除,自己吧,self

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

通知

这样的话,它是不是就移除通知了

就是说,当前自己不再监听了吧

这样的话,当前自己就不再监听了

第一个,OK了,好,这是移除通知

二、那么,接下来,我们就实现一个什么效果呢

通知

1.现在,这个键盘是不是没有弹出来,

没有弹出来呢,

假如说,我焦点进来,注意,现在这儿是不是写的这句话

通知

“借你妹夫……”,是不是写的这句话啊,

然后,当我弹出的时候,走,

通知

弹出的时候,这儿是不是还是显示这句话,

我希望当这个UIView向上平移以后,这个UITableView,是不是要把最后一行,给显示出来,

通知

是不是要显示这个啊,

就是说,当键盘弹出完毕以后,把这个UITableView,滚动到哪里,

滚动到最后一行

让最后一行,滚到最上面吧

还记得怎么实现吗

是不是调用tableView的scrollTo指定的行吧

来,咱们试一下

2.把这个实现一下

通知

在我们这个键盘弹出事件里面

它滚动完毕以后

//让UITableView的最后一行滚动到最上面

通知

好,首先,获取UITableView,怎么办

通知

self.tableView ,滚动,怎么写

通知

调用scrollTo,scrollTo哪儿呢,

scrollToRowAtIndexPath:(NSIndexPath *) atScrollPosition:(UITableViewScrollPosition)

通知

这个吧

通知

1)参数三:首先,最后一个很简单,是否使用动画,YES,

2)第一个参数:最后一行,是不是要创建一个这个,最后一行的Index对象,

怎么创建

通知

NSIndexPath *lastRowIdxPath = [NSIndexPath 有个叫forRow

通知
通知
通知

那么,一共有几个section,现在,0,

是不是一个section,所以说,索引是不是就找第0个section

第几行吧,

最后一行,怎么办,当前这个messageFrames有多少条数据

通知

最后一行,是不是它 减 1 这个索引

self.messageFrames.count - 1

通知

这样,是不是创建了一个最后一行,的index对象,然后把它怎么办,

拷贝过来吧

通知

对,传进来,

通知

然后,传进来以后,接下来

3)要让最后一行,滚到哪个位置呢

通知

UITableViewScrollPosition吧

通知

是不是滚到最上面啊

UITableViewScrollPositionTop

然后呢,走一走,看它管用不管用

通知

是不是滚出来了吧,

然后呢,注意,当它回去以后,是不是也是这个效果

通知

三、然后,接下来,再实现这个效果,UITableView一滚动,键盘自动缩回去

通知

1.首先,是不是要监听UITableView的滚动事件

或者说是,监听它的即将拖拽事件

是不是也行

只要你即将开始拖的时候,让它直接回去,是不是就可以吧

因为滚动事件,那个scrollViewDidScroll

会触发很多次啊

但是那个scrollViewWillBeginDragging,是不是只会触发一次

在你即将拖拽的时候,触发一次,

2.好,怎么样监听UITableView的willBeginDragging

事件

是不是代理啊

是不是我们之前的代理,是不是都设置好了

通知

是不是设置好了

对,直接是不是,实现那个方法,就OK了吧,

来,找到代理方法

通知

把这个注释复制过来,改成“代理方法”

通知

叫啥

通知

- tableView

通知

scrollView吗,scrollViewWillBeginDragging

通知

是不是UITableView继承自UIScrollView,

好,怎么办

让键盘,缩回去吧

好,怎么让键盘缩回去

怎么让把键盘叫出来,文本框获得焦点,是不是自动叫出来

怎么让把键盘缩回去,第一讲里面的“辞职”

或者说是,我是不是要通过程序,让当前控制器所管理的view,endEditing

想起来了吗

这样的话,所有是在这个控制器这个view里面的所有文本框,叫出来的键盘,都会缩回去啊

让控制器所管理的view,endEditing

结束编辑,就OK了

所以说,非常简单,就一句话

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{

//把键盘叫回去,思路:让控制器所管理的UIView结束编辑

self.view

通知
通知

是不是一句话搞定了

看看真的管用吗,出来,滚一下

通知

缩回去了吧

这个实现以后,我们关于键盘弹出、缩回去,基本就搞定了

四、有时候,大家可能会遇到这么一个问题,现在,我们键盘弹出,是不是没啥效果

1.键盘缩回去,是不是也没啥问题啊

但是,有时候,当键盘缩回去的时候,注意看

它这么一滑、键盘往回缩、你会发现,键盘先缩回去,然后这个UIView,再给它移下来

通知

或者说是,UIScrollView,先平移上去,然后,键盘再弹出来,

也就是说,这两个有时候,会看到不同步的问题

不同步,就会看到灰色这个背景

解决这个问题的办法,就是,

让UIScrollView向上平移的时候,也用一个动画,来平移,

键盘弹出的时候,是用了0.25秒,

弹出来的

你那个UIScrollView,平移的时候,如果唰一下,就平移上去了

你已经平移上去了,键盘才慢慢往上爬

是不是看着中间就有一个黑色的背景啊

解决办法就是,让那个UIScrollView,让那个self.view平移的时候,也用一个动画,0.25秒的时候,平移上去,

这样的话,键盘和它是不是同步了吧

解决那个灰色背景,就是我们平移的时候,也用一个动画,

可以给大家写一下,

2.在哪里写啊

键盘那个事件吧,

通知

- (void)keyboardWillChangeFrame

通知

键盘那个事件

通知
通知

怎么平移,UIView 叫什么

animation,吧

UIView animate

通知
通知

UIView animateWithDuration

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值