iPhone アプリケーションで、ラベル内のリンクを別の色 (ハイパーリンクなど) で表示したいと考えています。
誰かがリンクをクリックすると、Safari ブラウザーでリンクが開かれます。
どうすればそうできますか?
iPhone アプリケーションで、ラベル内のリンクを別の色 (ハイパーリンクなど) で表示したいと考えています。
誰かがリンクをクリックすると、Safari ブラウザーでリンクが開かれます。
どうすればそうできますか?
2つのサンプルコードリンクの例を聞いてください。
https://github.com/twotoasters/TTTAttributedLabel
http://furbo.org/stuff/FancyLabel_1.0.zip
または、このようにすることもできます
ラベルのuserInteractionEnabledをYESに設定し、ジェスチャーレコグナイザーを追加します。
myLabel.userInteractionEnabled = YES;
UITapGestureRecognizer *gestureRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(openUrl:)];
gestureRec.numberOfTouchesRequired = 1;
gestureRec.numberOfTapsRequired = 1;
[myLabel addGestureRecognizer:gestureRec];
[gestureRec release];
Then implement the action method:
- (void)openUrl:(id)sender
{
UIGestureRecognizer *rec = (UIGestureRecognizer *)sender;
id hitLabel = [self.view hitTest:[rec locationInView:self.view] withEvent:UIEventTypeTouches];
if ([hitLabel isKindOfClass:[UILabel class]]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:((UILabel *)hitLabel).text]];
}
}
リンクを確認するために正規表現を使用します
NSString *urlRegEx =@"((http|https)://)?((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
if ([urlTest evaluateWithObject:lbl.text])
{
//set color of lbl
}
ハイパーリンクを知るためにラベルで識別できるものは何もありません。
ラベルのように見えるカスタム ボタンを作成して (テキストと背景を clearColor としてのみ)、効果を与えます。