iphone--MBProgressHUD 显示方向异常(keyWindow问题)

一直在iphone上使用MBProgressHUD做提示信息视图,一直都没有什么问题,但用在ipad上使用时,却有时会出现显示方向不正常,如ipad屏幕是横的,但当MBProgressHUD出现时却按照竖屏的方向进行显示,一直不解,仔细看了出现的情况,发现只在当UIAlerView和MBProgressHUD一起出现的时候才有出现以上的情况

看了MBProgressHUD的源码,想了下原因可能如下

我们初始化MBProgressHUD时可能会用到下面方式初始化

        UIWindow *window = [[UIApplication sharedApplication] keyWindow];
        _hud = [[MBProgressHUD alloc] initWithWindow:window];

但是当UIAlertView出现时会重新初始化一个UIWindow并设置为keyWindow,这时当使用[[UIApplication shareApplication] keyWindow] 时获取到的就不是你本意想拿到的应用程序的UIWindow,另外UIAlertView的UIWindow方向可能就不是横屏的了,所以才出现以上的情况;

解决:使用 

_hud = [[MBProgressHUD alloc] initWithView:view];

初始化就行了

还有另一种情况

当你在UIAlertView委托方法

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;用第一种方法显示(即需要获取keyWindow),还是不能获取到主程序的keyWindow,

解决方法 用另一个委托就可以了

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;

以上亲测没有问题


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值