uitableViewCell مع نص قابل للاختيار/قابل للنسخ يكتشف أيضًا عناوين URL على iPhone

StackOverflow https://stackoverflow.com/questions/2514940

سؤال

لدي مشكلة. يتطلب جزء من تطبيقي عرض نص في جدول. يجب أن يكون النص قابلًا للاختيار/قابل للنسخ (ولكن ليس قابل للتحرير) وأي عناوين URL ضمن النص يجب تسليط الضوء عليها وعندما تسمح لي بالاستفادة من هذا عنوان URL وفتح متصفحي المضمن.

لقد رأيت بعض الحلول التي تحل أحد هذه المشكلات ، ولكن ليس كلاهما.

الحل 1: Iftweetlabel مصنع Icon Factory

كان الحل الأول الذي جربته هو استخدام فئة iftweetlabel التي أصبحت ممكنة بواسطة Icon Factory واستخدامها في TwitterRific.

على الرغم من أن هذا الحل يسمح بالوصلات (أو أي شيء يمكنك العثور عليه باستخدام regex) لاكتشافه على أساس كل حالة على أساس ، فإنه لا يسمح بالاختيار والنسخ.

هناك أيضًا مشكلة حيث إذا كان عنوان URL طويلًا بما يكفي ليتم لفه ، فإن الزر الذي يتراكبه الفئة فوق عنوان URL لجعله التفاعلي لا يمكنه التفاف وتجاهل الشاشة ، ويبدو غريبًا للغاية.

الحل 2: استخدم iftweetlabel ومعالجة النسخ يدويًا

الشيء الثاني الذي جربته هو الحفاظ على IFTWEETLABEL في مكانه للتعامل مع الروابط ، ولكن تنفيذ النسخ باستخدام لفتة طويلة ، مثل كيفية تعامل تطبيق SMS. كان هذا يتعلق بالعمل فقط ، لكنه لا يسمح بالاختيار التعسفي للنص ، أو يتم نسخ النص بأكمله ، أو يتم نسخ أي منها على الإطلاق ... أبيض وأسود.

الحل 3: UITextView

كانت محاولتي الثالثة لإضافة أ UITextView كإظهر فرعي لخلية الجدول.

الشيء الوحيد الذي لا يحله هذا هو حقيقة أنه لا يمكن التعامل مع عناوين URL المكتشفة من قبلي. يستخدم عرض النص UIApplicationopenURL: الطريقة التي تركت تطبيقي وأطلق Safari.

أيضًا ، نظرًا لأن عرض الجدول يمكن أن يصبح كبيرًا ، فإن عدد UITextViewتمت إضافة S كآراء فرعية في سحب أداء ملحوظ على التمرير في جميع أنحاء الجدول ، وخاصة على أجهزة عصر iPhone 3G (بسبب إنشاء ، تخطيط ، تركيب كلما تم تمرير الخلية على الشاشة ، إلخ).

لذا فإن سؤالي على كل ما أنت على دراية بقولك هناك: ماذا يمكنني أن أفعل؟

سوف UIWebView يكون الخيار الأفضل؟ بصرف النظر عن سحب الأداء ، أعتقد أن WebView ستحل جميع المشكلات المذكورة أعلاه ، وإذا كنت أتذكر بشكل صحيح ، مرة أخرى في 2.0 أيام ، فإن وثائق Apple أوصت بها بالفعل طرق عرض الويب حيث كانت هناك حاجة إلى ارتباطات نصية / تشعبية.

هل يمكن لأي شخص التفكير في طريقة لتحقيق ذلك دون سحب الأداء؟

شكرا جزيلا لكل من يمكنه المساعدة.

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

المحلول

بمجرد أن أضغط على زر الإرسال ، ضربتني فكرة جديدة.

لقد كنت منشغلاً للغاية بوجود عناوين URL مضمونة بالنص والتفاعلية لدرجة أنني لم أعتبر أنه ربما لا يكون هذا هو الحل الأفضل.

أنا متأكد من أن تحقيق هذا النوع من السلوك ، أ UIWebView هو الخيار الأفضل ، بغض النظر عن مشكلات الأداء.

ومع ذلك ، ربما تكون تجربة / تفاعل مستخدم أفضل هو عدم تسليط الضوء على عنوان URL المضمّن ، ولكن جمعها في صفيف خلف الكواليس ، وتقديم زر الكشف كعرض ملحق الخلية؟

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

عند استغلال زر الإفصاح ، يمكن نقل المستخدم إلى عنوان URL الموجود في النص ، أو إذا تم العثور على أكثر من عنوان URL ، يقدم المستخدم مع عرض منتقي لاختيار أي شيء يجب أن يذهب إليه.

أي أفكار/انتقادات لهذه الفكرة مرحب بها.

نصائح أخرى

يمكنك منع تحرير حقل النص عن طريق تجاوز أساليب UITextfield مندوب بحيث لا يطبق أي تعديلات. هذا يترك الحقل قابل للاختيار وقابل للنسخ ولكنه يمنع التغيير.

سؤال أفضل لطرحه هو: هل يجب عليك بالفعل عرض عنوان URL الفعلي نفسه؟ هل يمكنك الابتعاد عن اسم صفحة/موقع فقط ، فقط الخادم. لا أعتقد أن أي شخص ما سيحاول قراءة عنوان URL طويل على الشاشة المقيدة للجوال.

إذا كنت بحاجة إلى عرض عنوان URL بأكمله ، فأعتقد أن عرض التفاصيل هو الطريق للذهاب.

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