Гиперссылки в тексте «о» для приложения iphone - PullRequest
8 голосов
/ 11 января 2009

Я на последней стадии моего первого простого приложения для iPhone. Я строю представление "о" с кредитами / информацией / и т. Д.

Мне не хватает самой простой вещи: как я могу вставлять гиперссылки в текст? В настоящее время я использую UIView с UILabel для текста.

Я посмотрел здесь и примеры приложений, но никуда не попал. Должен ли я использовать UIWebView?

Thx.

Ответы [ 5 ]

11 голосов
/ 11 января 2009

Да, используйте UIWebView и вставьте в него статический HTML.

Вроде так:

[myWebView loadHTMLString:@"<html><head></head><body style=\"font-family: sans-serif;\"> .... </body></html>" baseURL:nil];
6 голосов
/ 30 апреля 2009

Чтобы запустить веб-браузер по указанному URL:

NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"];
[[UIApplication sharedApplication] openURL:target];

Этот код можно запустить где угодно. Я субклассировал UILabel, добавил метод touchedsEnded и поместил его туда. (Не забудьте установить labelname.userInteractionEnabled = YES;)

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"];
    [[UIApplication sharedApplication] openURL:target];
}
4 голосов
/ 25 февраля 2011

UIWebView, вероятно, неправильный способ сделать это. Это ОЧЕНЬ слишком много для чего-то подобного. Вы должны проверить проект Github с именем LRLinkableLabel .

Он будет автоматически определять любые URL-адреса, которые находятся внутри свойства .text.

Вы можете использовать его так:

LRLinkableLabel *label = [[LRLinkableLabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 20.0)];
label.delegate = self;
label.text = @"Check out http://dundermifflin.com to find some great paper deals!";

Тогда просто убедитесь, что self реализует этот метод:

- (void) linkableLabel:(LRLinkableLabel *)label clickedButton:(UIButton *)button forURL:(NSURL *)url {
    [[UIApplication sharedApplication] openURL:url];
}

Вы также можете использовать свойства linkColor и textColor для настройки внешнего вида метки. С этого момента вы можете использовать его, как и любой другой UILabel.

Не забудьте установить delegate на nil, когда вы закончите, чтобы убедиться, что все очищено.

Надеюсь, это поможет.

4 голосов
/ 11 января 2009

Вы можете запустить сафари, вызвав UIApplication openURL: метод с URL, который вы хотите отобразить. Это закроет ваше приложение, а затем откроет safari (или mail / youtube / etc).

Вы захотите сделать ссылку как-нибудь, возможно, кнопкой. Эта часть зависит от вас.

Если вы хотите встроить html-контент в ваше представление, тогда непременно используйте UIWebView.

Документация:

1 голос
/ 12 января 2009

Спасибо, Фрэнк и Райан.

В дополнение к указанию Фрэнка мне также нужно было реализовать UIWebViewDelegate и ссылку на него в Интерфейсном Разработчике. Причина была в том, что каждая ссылка, по которой щелкали, открывалась в моем приложении (без возможности навигации ...). Мне нужно было только реализовать этот метод, который открывает каждый URL с соответствующим приложением:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
        [[UIApplication sharedApplication] openURL:request.URL];
        return false;
    }
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...