سؤال

لدي مشكلة. تحتاج إلى مكون لمزيج النص والروابط والنص القابل للنقر.

في Facebook ، يمكن أن يرى تطبيق مثال.http://img193.imageshack.us/img193/1355/example1t.jpg

شخص ما يعرف أكثر مما يمكن أن يفعل هذا. على سبيل المثال ، يمكن لـ UITextView اكتشاف الروابط في النص ، ولكن لا يمكنك إدراج نص قابل للنقر.

شكرا لمساعدتك.

هل كانت مفيدة؟

المحلول

لقد استخدمت coretext لهذا الغرض.

كان حساب إزاحة الصنبور أمرًا صعبًا بعض الشيء ، لأنني ظللت أنسى قلب نظام الإحداثيات ، لكنني في النهاية حصلت عليه ، وهنا نظرة عامة موجزة على كيفية القيام بذلك:

  1. قم بإنشاء النص الخاص بك ك NSMutableAttributedString (بما أنه سيتعين عليك تعديله في مرحلة ما).
  2. قم بمسحه للنص الذي تريد إضافة رابط إليه ، وإدراج سنتين: 1) لون نص على سبيل المثال ، أزرق ؛ و 2) سمة رابط مخصص (قم بتسمية أي شيء تريده ، اجعل قيمته هو الرابط الذي تريد الذهاب إليه)
  3. عرض النص في الخاص بك drawRect:. ستحتاج إلى إنشاء ملف CTFramesetterRef و CTFrameRef (الأخير الذي سترغب في الاحتفاظ به. لاحظ أيضًا أن إنشاء إطارات هو عملية باهظة الثمن ، قم بذلك مرة واحدة فقط (أي ، خارج Drawrect :) إذا كان ذلك ممكنًا).
  4. في رمز معالجة اللمس ، كما ذكرت سابقًا ، ستحتاج إلى تعويض أنظمة الإحداثيات المختلفة. من هناك ، على افتراض أنك تعرف أين يستخدم النص الخاص بك نظام الإحداثيات الخاص به ، يمكنك معرفة أين تم عرض النقر على النص ، والذي يمكن اعتراضه في معالج اللمس الخاص بك ، إذا كانت السمة على حد ما معينًا CTRunRef يحتوي على سمة الرابط المخصص الخاص بك. إذا كان الأمر كذلك ، فما عليك سوى الحصول على السمة ، وقم بتمريرها إلى أي شيء - عادةً ما تريد استخدام مندوب.

هذا هو جوهره.

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