Xamarin.forms: خاصية IsPassword الخاصة بالإدخال ، عندما يتم تغييرها برمجيًا لا تقوم بإخفاء / إلغاء إخفاء النص في الشاشة في تطبيق Mac

تم إنشاؤها على ٢ أبريل ٢٠١٨  ·  3تعليقات  ·  مصدر: xamarin/Xamarin.Forms

وصف

عندما يتم تغيير خاصية IsPassword للإدخال ديناميكيًا في نماذج Xamarin ، فإنها لا تنعكس في تطبيق Xamarin Mac المتكامل مع نماذج Xamarin.

خطوات التكاثر

  1. قم بإنشاء إدخال باسم كلمة المرور في تطبيق Xamarin Forms
  2. قم بتعيين خاصية IsPassword على true في Xaml.
  3. قم بإنشاء زر يسمى toggle باستخدام معالج النقر toggle_clicked
  4. في المعالج ، قم بتغيير كلمة المرور. isPassword = false ؛
  5. أضف بعض النص في الإدخال
  6. انقر فوق زر التبديل

سلوك متوقع

يجب كشف النص في إدخال كلمة المرور

السلوك الفعلي

لا يزال النص في الإدخال مقنعًا
حتى العكس بالعكس لا يعمل كما هو متوقع

ملاحظة: يحدث هذا فقط في نظام التشغيل Mac (iOS و Android و UWP جيدان مع هذا)

معلومات اساسية

  • الإصدار الذي يحتوي على الإصدار: نماذج Xamarin: 2.5.0.280555
  • آخر إصدار جيد معروف:
  • IDE: استوديو مرئي لنظام التشغيل Mac
  • الأطر المستهدفة للمنصة:

    • iOS:

    • ذكري المظهر:

    • UWP:

    • ماك: 4.2.1.28

  • إصدار مكتبة دعم Android:
  • حزم نوجيت:
  • الأجهزة المتأثرة: تطبيق Mac

لقطات

رابط الاستنساخ

6 low impact macOS bug

ال 3 كومينتر

أواجه نفس المشكلة ، إنها تحدث فقط على نظام Mac. لقد اختبرت ذلك مع WPF و GTK وتعمل بشكل جيد.

هذا لأنه لم يتم تنفيذ هذا الرمز . لسوء الحظ ، فإن تطبيق هذا على macOS ليس بالأمر السهل ، لأنه في نظام Mac ، فإن عنصر التحكم "password on" ( NSSecureTextField ) هو فئة منفصلة تمامًا عن عنصر التحكم "password off" ( NSTextField ). يتطلب تنفيذ هذا في EntryRenderer إعادة إنشاء سيطرته الأصلية في كل مرة يتغير فيها IsPassword .

على الرغم من أن NSSecureTextField يدعم إزالة الرموز النقطية (راجع -[NSSecureTextFieldCell echosBullets] ) ، فإن استخدام ذلك لتنفيذ "إيقاف تشغيل كلمة المرور" يعد فكرة سيئة ، لأن تعيين echosBullets إلى false لا يزيل السلوكيات الأخرى من NSSecureTextField (مثل عدم القدرة على النسخ منه).

rmarinho لقد أضفت للتو تنفيذ هذه المشكلة لنظام التشغيل MacOS.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات