Как дать действие гиперссылки в UIAlertController? - PullRequest
1 голос
/ 14 февраля 2020

Я не могу нажать на гиперссылку в UIAlertController. Я хочу открыть внешний браузер по щелчку гиперссылки.

-(void)viewDidAppear:(BOOL) animated {
    NSString *htmlString = @"Welcom to AlertView for more information <A href=\"https://www.google.com\"> Click Here </A>";
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@""
                                                                     message:htmlString
                                                              preferredStyle:UIAlertControllerStyleAlert];
    NSAttributedString *attributedStr = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding]
               options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                         NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
    documentAttributes:nil error:nil];
    UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
        // OK button tappped.
        [self dismissViewControllerAnimated:YES completion:^{ }];
    }];
    [alert setValue:attributedStr forKey: @"attributedMessage"];
    [alert addAction:defaultAction];
    [self presentViewController:alert animated:true completion:nil];
}

при нажатии на кнопку «Нажмите здесь», после чего должен открыться внешний браузер. Возможно ли получить действие щелчка по гиперссылке в UIAlertView?

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Я думаю, что было бы лучше добавить стандартную кнопку действия, возможно, с заголовком «Дополнительная информация», которая позаботится об открытии URL, но вы можете взглянуть на этот тот же вопрос .

    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"" message:@"Welcome to AlertView" preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *linkAction = [UIAlertAction actionWithTitle:@"More info" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
         [[UIApplication sharedApplication] openURL:[NSURL URLWithString: yourUrl]];
    }];
    UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
        // OK button tappped.
        [self dismissViewControllerAnimated:YES completion:^{ }];
    }];
    [alert addAction:linkAction];
    [alert addAction:defaultAction];
    [self presentViewController:alert animated:true completion:nil];
0 голосов
/ 14 февраля 2020

Я думаю, что это возможно, но я думаю, что это не рекомендуется руководящими принципами Apple. Вместо этого вы должны установить заголовок с «Добро пожаловать в этот AlertView, для получения дополнительной информации проверьте наш веб-сайт» с двумя кнопками «ОК» и «Нет, спасибо», например. Пользователь обычно нажимал на встроенную кнопку вместо текста внутри контроллера предупреждений. Надеюсь, это поможет.

...