[ios] Replaced UIActionSheet, UIAlertView with UIAlertController
This commit is contained in:
@@ -220,10 +220,8 @@ public:
|
||||
@interface MGLMapView () <UIGestureRecognizerDelegate,
|
||||
GLKViewDelegate,
|
||||
CLLocationManagerDelegate,
|
||||
UIActionSheetDelegate,
|
||||
SMCalloutViewDelegate,
|
||||
MGLCalloutViewDelegate,
|
||||
UIAlertViewDelegate,
|
||||
MGLMultiPointDelegate,
|
||||
MGLAnnotationImageDelegate>
|
||||
|
||||
@@ -236,7 +234,6 @@ public:
|
||||
@property (nonatomic) NS_MUTABLE_ARRAY_OF(NSLayoutConstraint *) *logoViewConstraints;
|
||||
@property (nonatomic, readwrite) UIButton *attributionButton;
|
||||
@property (nonatomic) NS_MUTABLE_ARRAY_OF(NSLayoutConstraint *) *attributionButtonConstraints;
|
||||
@property (nonatomic) UIActionSheet *attributionSheet;
|
||||
@property (nonatomic, readwrite) MGLStyle *style;
|
||||
@property (nonatomic) UITapGestureRecognizer *singleTapGestureRecognizer;
|
||||
@property (nonatomic) UIPanGestureRecognizer *pan;
|
||||
@@ -312,8 +309,6 @@ public:
|
||||
|
||||
MGLCompassDirectionFormatter *_accessibilityCompassFormatter;
|
||||
|
||||
NS_ARRAY_OF(MGLAttributionInfo *) *_attributionInfos;
|
||||
|
||||
MGLReachability *_reachability;
|
||||
}
|
||||
|
||||
@@ -897,11 +892,6 @@ public:
|
||||
_mbglMap->setSize([self size]);
|
||||
}
|
||||
|
||||
if (self.attributionSheet.visible)
|
||||
{
|
||||
[self.attributionSheet dismissWithClickedButtonIndex:self.attributionSheet.cancelButtonIndex animated:YES];
|
||||
}
|
||||
|
||||
if (self.compassView.alpha)
|
||||
{
|
||||
[self updateHeadingForDeviceOrientation];
|
||||
@@ -1881,82 +1871,108 @@ public:
|
||||
|
||||
- (void)showAttribution
|
||||
{
|
||||
self.attributionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedStringWithDefaultValue(@"SDK_NAME", nil, nil, @"Mapbox iOS SDK", @"Action sheet title")
|
||||
delegate:self
|
||||
cancelButtonTitle:NSLocalizedStringWithDefaultValue(@"CANCEL", nil, nil, @"Cancel", @"")
|
||||
destructiveButtonTitle:nil
|
||||
otherButtonTitles:nil];
|
||||
|
||||
_attributionInfos = [self.style attributionInfosWithFontSize:[UIFont buttonFontSize] linkColor:nil];
|
||||
for (MGLAttributionInfo *info in _attributionInfos)
|
||||
NSString *title = NSLocalizedStringWithDefaultValue(@"SDK_NAME", nil, nil, @"Mapbox iOS SDK", @"Action sheet title");
|
||||
UIAlertController *attributionController = [UIAlertController alertControllerWithTitle:title
|
||||
message:nil
|
||||
preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
|
||||
NSArray *attributionInfos = [self.style attributionInfosWithFontSize:[UIFont buttonFontSize]
|
||||
linkColor:nil];
|
||||
for (MGLAttributionInfo *info in attributionInfos)
|
||||
{
|
||||
NSString *title = [info.title.string mgl_titleCasedStringWithLocale:[NSLocale currentLocale]];
|
||||
[self.attributionSheet addButtonWithTitle:title];
|
||||
}
|
||||
|
||||
[self.attributionSheet addButtonWithTitle:NSLocalizedStringWithDefaultValue(@"TELEMETRY_NAME", nil, nil, @"Mapbox Telemetry", @"Action in attribution sheet")];
|
||||
|
||||
[self.attributionSheet showFromRect:self.attributionButton.frame inView:self animated:YES];
|
||||
}
|
||||
|
||||
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
|
||||
{
|
||||
if (buttonIndex == actionSheet.numberOfButtons - 1)
|
||||
{
|
||||
NSString *message;
|
||||
NSString *participate;
|
||||
NSString *optOut;
|
||||
|
||||
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"MGLMapboxMetricsEnabled"])
|
||||
{
|
||||
message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_MSG", nil, nil, @"You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
|
||||
participate = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_ON", nil, nil, @"Keep Participating", @"Telemetry prompt button");
|
||||
optOut = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_OFF", nil, nil, @"Stop Participating", @"Telemetry prompt button");
|
||||
}
|
||||
else
|
||||
{
|
||||
message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_MSG", nil, nil, @"You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
|
||||
participate = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_ON", nil, nil, @"Participate", @"Telemetry prompt button");
|
||||
optOut = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_OFF", nil, nil, @"Don’t Participate", @"Telemetry prompt button");
|
||||
}
|
||||
|
||||
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedStringWithDefaultValue(@"TELEMETRY_TITLE", nil, nil, @"Make Mapbox Maps Better", @"Telemetry prompt title")
|
||||
message:message
|
||||
delegate:self
|
||||
cancelButtonTitle:participate
|
||||
otherButtonTitles:NSLocalizedStringWithDefaultValue(@"TELEMETRY_MORE", nil, nil, @"Tell Me More", @"Telemetry prompt button"), optOut, nil];
|
||||
[alert show];
|
||||
}
|
||||
else if (buttonIndex > 0)
|
||||
{
|
||||
MGLAttributionInfo *info = _attributionInfos[buttonIndex + actionSheet.firstOtherButtonIndex];
|
||||
NSURL *url = info.URL;
|
||||
if (url)
|
||||
{
|
||||
if (info.feedbackLink)
|
||||
UIAlertAction *action = [UIAlertAction actionWithTitle:title
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * _Nonnull action) {
|
||||
NSURL *url = info.URL;
|
||||
if (url)
|
||||
{
|
||||
url = [info feedbackURLAtCenterCoordinate:self.centerCoordinate zoomLevel:self.zoomLevel];
|
||||
if (info.feedbackLink)
|
||||
{
|
||||
url = [info feedbackURLAtCenterCoordinate:self.centerCoordinate
|
||||
zoomLevel:self.zoomLevel];
|
||||
}
|
||||
[[UIApplication sharedApplication] openURL:url];
|
||||
}
|
||||
[[UIApplication sharedApplication] openURL:url];
|
||||
}
|
||||
}];
|
||||
[attributionController addAction:action];
|
||||
}
|
||||
|
||||
NSString *telemetryTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_NAME", nil, nil, @"Mapbox Telemetry", @"Action in attribution sheet");
|
||||
UIAlertAction *telemetryAction = [UIAlertAction actionWithTitle:telemetryTitle
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * _Nonnull action) {
|
||||
[self presentTelemetryAlertController];
|
||||
}];
|
||||
[attributionController addAction:telemetryAction];
|
||||
|
||||
NSString *cancelTitle = NSLocalizedStringWithDefaultValue(@"CANCEL", nil, nil, @"Cancel", @"");
|
||||
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelTitle
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:NULL];
|
||||
[attributionController addAction:cancelAction];
|
||||
|
||||
attributionController.popoverPresentationController.sourceView = self;
|
||||
attributionController.popoverPresentationController.sourceRect = self.attributionButton.frame;
|
||||
|
||||
UIViewController *viewController = self.window.rootViewController;
|
||||
if ([viewController isKindOfClass:[UINavigationController class]]) {
|
||||
viewController = [(UINavigationController *)viewController viewControllers].firstObject;
|
||||
}
|
||||
[viewController presentViewController:attributionController
|
||||
animated:YES
|
||||
completion:NULL];
|
||||
}
|
||||
|
||||
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
|
||||
- (void)presentTelemetryAlertController
|
||||
{
|
||||
if (buttonIndex == alertView.cancelButtonIndex)
|
||||
NSString *title = NSLocalizedStringWithDefaultValue(@"TELEMETRY_TITLE", nil, nil, @"Make Mapbox Maps Better", @"Telemetry prompt title");
|
||||
NSString *message;
|
||||
NSString *participateTitle;
|
||||
NSString *declineTitle;
|
||||
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"MGLMapboxMetricsEnabled"])
|
||||
{
|
||||
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MGLMapboxMetricsEnabled"];
|
||||
message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_MSG", nil, nil, @"You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
|
||||
participateTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_ON", nil, nil, @"Keep Participating", @"Telemetry prompt button");
|
||||
declineTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_OFF", nil, nil, @"Stop Participating", @"Telemetry prompt button");
|
||||
}
|
||||
else if (buttonIndex == alertView.firstOtherButtonIndex)
|
||||
else
|
||||
{
|
||||
message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_MSG", nil, nil, @"You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
|
||||
participateTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_ON", nil, nil, @"Participate", @"Telemetry prompt button");
|
||||
declineTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_OFF", nil, nil, @"Don’t Participate", @"Telemetry prompt button");
|
||||
}
|
||||
|
||||
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
NSString *moreTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_MORE", nil, nil, @"Tell Me More", @"Telemetry prompt button");
|
||||
UIAlertAction *moreAction = [UIAlertAction actionWithTitle:moreTitle
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * _Nonnull action) {
|
||||
[[UIApplication sharedApplication] openURL:
|
||||
[NSURL URLWithString:@"https://www.mapbox.com/telemetry/"]];
|
||||
}
|
||||
else if (buttonIndex == alertView.firstOtherButtonIndex + 1)
|
||||
{
|
||||
}];
|
||||
[alertController addAction:moreAction];
|
||||
|
||||
UIAlertAction *declineAction = [UIAlertAction actionWithTitle:declineTitle
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * _Nonnull action) {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MGLMapboxMetricsEnabled"];
|
||||
}
|
||||
}];
|
||||
[alertController addAction:declineAction];
|
||||
|
||||
UIAlertAction *participateAction = [UIAlertAction actionWithTitle:participateTitle
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * _Nonnull action) {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MGLMapboxMetricsEnabled"];
|
||||
}];
|
||||
[alertController addAction:participateAction];
|
||||
|
||||
[self.window.rootViewController presentViewController:alertController
|
||||
animated:YES
|
||||
completion:NULL];
|
||||
}
|
||||
|
||||
#pragma mark - Properties -
|
||||
|
||||
Reference in New Issue
Block a user