Objective c 如何在iPhone上获取不同监控区域的单独警报?
我试图在输入5个不同的区域时创建不同的警报。我现在正在设置这样的区域Objective c 如何在iPhone上获取不同监控区域的单独警报?,objective-c,xcode,ios4,mkmapview,core-location,Objective C,Xcode,Ios4,Mkmapview,Core Location,我试图在输入5个不同的区域时创建不同的警报。我现在正在设置这样的区域 //Monitoring a Region CLLocationCoordinate2D layerCoords = CLLocationCoordinate2DMake(53.385909, -6.260067); CLRegion *layerRoom = [[CLRegion alloc] initCircularRegionWithCent
//Monitoring a Region
CLLocationCoordinate2D layerCoords =
CLLocationCoordinate2DMake(53.385909, -6.260067);
CLRegion *layerRoom = [[CLRegion alloc]
initCircularRegionWithCenter:layerCoords
radius:100
identifier:@"layerRoom"];
// Start monitoring for our CLRegion using best accuracy
[locationManager startMonitoringForRegion:layerRoom
desiredAccuracy:kCLLocationAccuracyBest];
我可以很容易地再设置5个警报,但对于警报,我不太确定该怎么办。我目前正在使用这个方法
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
UIAlertView *locationAlert = [[UIAlertView alloc]
initWithTitle:@"Success!" message:@"You have arrived!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
// Display the alert
[locationAlert show];
}
我不知道如何为每个地区定制它。对不起,如果这是一个愚蠢的问题,我是一个完全的初学者。有人能帮忙吗?非常感谢 didEnterRegion为您提供了一个区域参数。您可以使用它来检查是roomRegion还是其他区域。将它们放在数组、字典或其他任何地方,以便与您输入的区域进行比较。您的意思是,如果([region containsCoordinate:layerCoords]==YES){Do something}那么我的第一次尝试更像是如果(region==layerRoom){Do something}但这取决于您保留对layerRoom的引用,并返回对已触发区域的引用,而不是具有相同边界的新区域的引用。只要你的区域不超过一圈,你的方法看起来应该可以很好地工作。谢谢,@Craig!我尝试了if(region==layerRoom),但它无法识别layerRoom。可能是因为我在-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil方法中设置了区域监视。当警报发生在-(void)locationManager:(CLLocationManager*)manager didEnterRegion:(CLRegion*)区域方法中时。我试着从方法中去掉区域监控,但这也会导致问题。不确定我应该把它放在哪里?如果你打算在两个函数中使用layerRoom,你不能期望在一个函数中声明它,而另一个函数知道它。变量范围(如其他函数了解变量的范围)是在处理iOS时应该已经涉及的内容。看看MKMapView,该变量可用于所有函数,因为它是在头中声明的,而不是在一个函数中声明的。我想我们离题了。现在用containsCoordinate试试你们的想法,然后看看“范围”。以防万一人们用它作为参考,若(region==namedregion)不起作用。我认为这与共享资源有关,并且无法进行指针级别的比较。但是如果([区域包含坐标:yourCoordinates])起作用。