مكون لمزيج النص والروابط والنص القابل للنقر
-
26-09-2019 - |
سؤال
لدي مشكلة. تحتاج إلى مكون لمزيج النص والروابط والنص القابل للنقر.
في Facebook ، يمكن أن يرى تطبيق مثال.http://img193.imageshack.us/img193/1355/example1t.jpg
شخص ما يعرف أكثر مما يمكن أن يفعل هذا. على سبيل المثال ، يمكن لـ UITextView اكتشاف الروابط في النص ، ولكن لا يمكنك إدراج نص قابل للنقر.
شكرا لمساعدتك.
المحلول
لقد استخدمت coretext لهذا الغرض.
كان حساب إزاحة الصنبور أمرًا صعبًا بعض الشيء ، لأنني ظللت أنسى قلب نظام الإحداثيات ، لكنني في النهاية حصلت عليه ، وهنا نظرة عامة موجزة على كيفية القيام بذلك:
- قم بإنشاء النص الخاص بك ك
NSMutableAttributedString
(بما أنه سيتعين عليك تعديله في مرحلة ما). - قم بمسحه للنص الذي تريد إضافة رابط إليه ، وإدراج سنتين: 1) لون نص على سبيل المثال ، أزرق ؛ و 2) سمة رابط مخصص (قم بتسمية أي شيء تريده ، اجعل قيمته هو الرابط الذي تريد الذهاب إليه)
- عرض النص في الخاص بك
drawRect:
. ستحتاج إلى إنشاء ملفCTFramesetterRef
وCTFrameRef
(الأخير الذي سترغب في الاحتفاظ به. لاحظ أيضًا أن إنشاء إطارات هو عملية باهظة الثمن ، قم بذلك مرة واحدة فقط (أي ، خارج Drawrect :) إذا كان ذلك ممكنًا). - في رمز معالجة اللمس ، كما ذكرت سابقًا ، ستحتاج إلى تعويض أنظمة الإحداثيات المختلفة. من هناك ، على افتراض أنك تعرف أين يستخدم النص الخاص بك نظام الإحداثيات الخاص به ، يمكنك معرفة أين تم عرض النقر على النص ، والذي يمكن اعتراضه في معالج اللمس الخاص بك ، إذا كانت السمة على حد ما معينًا
CTRunRef
يحتوي على سمة الرابط المخصص الخاص بك. إذا كان الأمر كذلك ، فما عليك سوى الحصول على السمة ، وقم بتمريرها إلى أي شيء - عادةً ما تريد استخدام مندوب.
هذا هو جوهره.
لا تنتمي إلى StackOverflow