属性付き文字列をNSLinkAttributeName
で使用して、iOS 7プロジェクト内のUILabel
インスタンス内にクリック可能なリンクを作成します。これは、外部ライブラリを使用せずに最終的に可能になります。
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSDictionary *attr = [NSDictionary dictionaryWithObjectsAndKeys:
url, NSLinkAttributeName, nil];
文字列に属性を適用すると、テキストに青と下線が表示されますが、クリック/タップでは何も起こりません。ラベルのユーザー操作が有効になっています。誰もこれを行う方法を知っていますか?ありがとう!
私は今、自分の質問に答えることができます:UITextView
の代わりにUILabel
を使用しています。ラベルのように見えるようにUITextView
をフォーマットし、追加しました:
UITextView *textView = [[UITextView alloc] init];
textView.scrollEnabled = NO;
textView.editable = NO;
textView.textContainer.lineFragmentPadding = 0;
textView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0);
textView.delegate = self;
デリゲートを設定することを忘れないでください、UITextViewDelegate
を実装する必要があります!次に、デリゲートメソッドを実装します。
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)url inRange:(NSRange)characterRange
{
return YES;
}
これにより、クリック/タップに関する質問の属性文字列から提供されたNSURL
- instanceが自動的に開きます。
要確認:これはiOS 7でのみ機能します。レガシーサポートには外部ライブラリが必要です
UPDATE:
UITextView
sをラベルのように振る舞わせることは、結局は完全に混乱し、iOSの恐ろしい振る舞いにつまずきました。私は TTTAttributedLabel ライブラリを使用することになりました。これは単に素晴らしいものであり、UITextView
sの代わりにラベルを使用することができました。