在我的应用程序中我想实现一个功能,我在我的应用程序中有一个按钮,我想当网络从iOS设备丢失然后这个按钮应该自动变为禁用,当再次使网络正常可用时,按钮应该成为启用。
每次设备网络连接丢失或可用时,都应自动完成此操作。
我没有得到任何方式或任何类型的线索来实现此功能,如果有人知道如何在iOS应用程序中实现此功能,那么请帮助我。
提前感谢。
答案 0 :(得分:4)
我相信您正在使用 Reachability 类进行网络状态检测。因此,您可以使用此代码段注册网络状态更改检测
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityHasChanged :) name:kReachabilityChangedNotification object:nil];
现在,您可以为可达性对象
调用 startNotifier[self.internetReachability startNotifier];
并且在方法 reachabilityHasChanged 内,您可以捕获所有3种状态的状态更改,即 ReachableViaWiFi , ReachableViaWWAN 和 NotReachable 。现在,从无法访问的情况下,您可以禁用按钮,如:
myButton.enabled = NO;
从可达状态开始,您可以再次启用它。
答案 1 :(得分:1)
您可以使用NSTimer,并且在该计时器中,您可以在每2秒后调用Reachability类的BOOL函数,并使其重复YES,返回true为假
NSTimer* internetTimer;
internetTimer=[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(checkInternet) userInfo:nil repeats:YES];
-(void)checkInternet{
if([self isInternetAvailable])
{
//enable button
}
else
{
//disable button
}
}
-(BOOL)isInternetAvailable()
{
Reachability *networkReachability = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [networkReachability currentReachabilityStatus];
return !(networkStatus == NotReachable);
}
您可以在这里找到Reachability类.h和.m。只需在项目中添加这两个文件即可。 https://github.com/tonymillion/Reachability
如果您处于ARC模式,可能还需要为.m
设置fno标志。您还可以在某处添加可访问性观察者(即在viewDidLoad中):
Reachability *reachabilityInfo;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(myReachabilityDidChangedMethod)
name:kReachabilityChangedNotification
object:reachabilityInfo];
答案 2 :(得分:1)
您必须在https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html
上阅读Apple的文档和来源在Reachability / APLViewController.m中,您将找到所有答案,例如如何观察网络更改通知以及如何更新按钮状态(启用/禁用),甚至可以更新用户界面