Как включить гиперссылку в ярлык в Cocoa Touch? - PullRequest
2 голосов
/ 05 октября 2011

Я пытаюсь найти простой способ включить гиперссылку в текст метки в моем приложении для iOS. Цель состоит в том, чтобы пользователь коснулся URL-адреса, и приложение откроет браузер Safari с этим URL-адресом.

Я читал о включении кнопки с URL-адресом в качестве метки, но это не будет работать для моего приложения.

Есть ли простой способ сделать это?

Большое спасибо

Ответы [ 3 ]

1 голос
/ 05 октября 2011

Вы можете достичь этого, используя NSArrtibutedStrings - но я бы порекомендовал использовать некоторую обертку вокруг этой C-функции.Мне нравится OHAttributedLabel.

Демонстрация в комплекте показывает, как именно можно обрабатывать гиперссылки.

0 голосов
/ 05 октября 2011

Вам необходимо включить взаимодействие с пользователем для вашей метки, а затем переопределить метод - (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event для обработки касания.

Чтобы включить взаимодействие с пользователем, установите следующее свойство на вашей UILabel:

urlLabel.userInteractionEnabled = YES;

Пример touchedEnded: WihEvent: в вашем UIViewController:

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
   UITouch  * touch;
   CGPoint    currPt;

   if ((touches = [event touchesForView:urlLabel]))
   {
      touch = [touches anyObject];
      currPt  = [touch locationInView:self.view];
      if ( (currPt.x >= urlLabel.frame.origin.x) &&
           (currPt.y >= urlLabel.frame.origin.y) &&
           (currPt.x <= (urlLabel.frame.origin.x + urlLabel.frame.size.width)) &&
           (currPt.y <= (urlLabel.frame.origin.y + urlLabel.frame.size.height)) )
      {
         [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlLabel.text]];
         return;
      };
   };

   return;
}
0 голосов
/ 05 октября 2011

Вместо вызова Safari вы можете запустить UIWebView. Вы можете лучше контролировать действия, которые пользователь может выполнять на этой веб-странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...