سؤال

أريد استخدام السلاسل المنسوبة مع NSLinkAttributeName لإنشاء روابط قابلة للنقر داخل أ UILabel مثيل في مشروع iOS 7 الخاص بي ، والذي أصبح من الممكن الآن أخيرًا دون استخدام المكتبات الخارجية.

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-لا من السلسلة المنسوبة في سؤالي عند النقر/النقر.

تذكر: هذا يعمل على iOS 7 فقط ، للحصول على الدعم القديم ، تحتاج إلى مكتبات خارجية

تحديث:

جعل UITextViewتتصرف مثل الملصقات كانت فوضى كاملة في النهاية وتعثرت على بعض ios-behaviours البشعة. انتهى بي الأمر باستخدام tttattributedlabel المكتبة التي هي ببساطة رائعة وسمحت لي باستخدام الملصقات بدلاً من UITextViewس.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top