ActionSheet样式UIAlertController的正确使用

苹果在WWDC 2014 session video的a look inside presentation controllers一讲中,展示了如何使用UIAlertController,看起来挺简单,但在实际用的时候,问题不少,原因是苹果并没有详细对其进行说明,因此不得不探索一番。

对于Alert样式的UIAlertController,没有什么问题(在不同设备上及在处理屏幕旋转问题上,都没问题)。但,ActionSheet样式的UIAlertController却出现了一些问题(在iPhone、iPod touch上没问题,但在iPad上有问题),使用起来有些不太容易,这里会对在iPad上如何使用ActionSheet样式的UIAlertController进行较为详细的说明。

按照session video中提供的示例代码,写出一个示例工程。

在iPad模拟器中运行,“妖精”就出现了。

action-sheet-in-ipad-issue-1

按照惯例,应该显示在中心位置才对啊!但它偏偏显示为这个样子。

点上一点,它自动就消失了!看来,苹果已经实现了消失功能,并不需要自己来写。这个同样适用于alert样式。

action-sheet-in-ipad-auto-dismiss-after-click-1

此处发现一个现象:点击其它区域,它也会消失,这不是popover的特性么!有图有真像。

action-sheet-in-ipad-auto-dismiss-after-click-2

想了想,苹果的这一讲,从头到尾,说的是presentation controller,会不会与presentation controller有关呢?再者,苹果有提供UIPresentationController类的子类:UIPopoverPresentationController。试试就知道!

再次运行起来。

action-sheet-in-ipad-auto-dismiss-after-click-3

如上图,它显示在了所指定的位置,并且,点击其它区域,它也不会消失,为嘛不会消失?看代理方法。

这个方法返回了NO,所以,点击其它区域,它不会消失。

继续折腾。看看旋转屏幕后,会怎样。

action-sheet-in-ipad-rotation-issue-1

“妖精”溃败后又卷土重来啦!这这这,如何是好啊!兵来将挡,水来土掩呗。

仔细看了一看。

代理方法-popoverPresentationController:willRepositionPopoverToRect:inView:不正是那个需要的东东么!看看这个方法的含义就知道啦。对这个方法的实现进行修改。

按照上面代码的实现,我们还是要让它居中显示。看看样子吧。

action-sheet-in-ipad-rotation-issue-resolvent

这不正是我们想要的结果嘛!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值