您的位置:首页 > 理论基础 > 计算机网络

网络监听

2015-08-15 09:30 471 查看
1 在父控制器中的 viewDidLoad() 函数中添加 通知

//开启对发送网络请求的监听

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sendRequestFailed) name:kSendHTTPRequestFailedNotifation object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sendRequestSuccess) name:kSendHTTPRequestSuccessNotification object:nil];

//开启对网络状况的监听;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:@"kNetworkReachabilityChangedNotification" object:nil];


2 在实现文件中实现相应的方法

/**

* 网络请求成功,移除未成功移除的无网络提示图片

*/

-(void)sendRequestSuccess

{

if (self.noNetworkView !=nil) {

[self.warringimageView removeFromSuperview];

[self.failLabel removeFromSuperview];

[self.noNetworkView removeFromSuperview];

self.warringimageView = nil;
self.failLabel = nil;
self.noNetworkView = nil;
}


}

/**

* //网络请求失败添加提示图片

*/

-(void)sendRequestFailed

{

//UIView *view=[[UIApplication sharedApplication].windows lastObject];

self.SRFailImageView=[[UIImageView alloc] init];

self.SRFailImageView.tag =11111;

CGFloat imageViewX=0;

CGFloat imageViewY=0;

CGFloat imageViewW=ScreenWidth;

CGFloat imageViewH=Screenheight - 64;

if(Screenheight< 500)

{

self.SRFailImageView.frame=CGRectMake(imageViewX, imageViewY, imageViewW, Screenheight);

}else

{

self.SRFailImageView.frame=CGRectMake(imageViewX, imageViewY, imageViewW, imageViewH);

}

self.SRFailImageView.image=[UIImage resizedImageWithName:@”fail”];

if (!_isNotShowfailImage) {

[self.view addSubview: self.SRFailImageView];

[self.view bringSubviewToFront:self.SRFailImageView];

}

[self.SRFailImageView setUserInteractionEnabled:YES]; // 可以触发交互事件

UITapGestureRecognizer *tapGes=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(reTry)];

tapGes.numberOfTapsRequired=1;

tapGes.numberOfTouchesRequired=1;

[self.SRFailImageView addGestureRecognizer:tapGes];

}

/**

* //网络连接改变

*/

-(void) reachabilityChanged:(NSNotification *)note

{

Reachability *curReach = [note object];

NSParameterAssert([curReach isKindOfClass:[Reachability class]]);

[self updateInterfaceWithReachability:curReach];

}

/**

* //对网络状态发生变化做相应处理;

*/

-(void) updateInterfaceWithReachability:(Reachability *)reachability

{

NetworkStatus netStatus = [reachability currentReachabilityStatus];

if (reachability==self.hostReach) {

switch (netStatus) {

case NotReachable:

NSLog(@”NotReachable”);

[self showNonetWorkMessage];

//[self performSelector:@selector(testConnected) withObject:nil afterDelay:1.0f];

break;

case ReachableViaWWAN:

NSLog(@”ReachableViaWWAN”);

[self hideNoNetWorkMessage];

break;

case ReachableViaWiFi:

NSLog(@”ReachableViaWiFi”);

[self hideNoNetWorkMessage];

break;

default:
break;

}

}


}

3 在最后移除通知

-(void)dealloc

{

//移除通知

[[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];

[[NSNotificationCenter defaultCenter] removeObserver:self name:kSendHTTPRequestFailedNotifation object:nil];

[[NSNotificationCenter defaultCenter] removeObserver:self name:kNotificationLanguageChanged object:nil];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络