كيفية جعل NSColorPanel (باستخدام NSColorWell) ولوحة الألوان الخاصة بـ NSFontPanel تتعايشان؟
-
06-07-2019 - |
سؤال
لدي لوحة تفضيلات في طلبي حيث لدي NSColorWell
لتعيين بعض ألوان الخلفية والزر الذي يفتح NSFontPanel
لاختيار الخط.
السلوك الذي أريد أن أمتلكه هو ما يلي:
عندما أقوم بالنقر على
NSColorWell
ثم اسحب فوق بعض الألوان في اللوحة، وأريد تغييرها لون الخلفية في منطقة "المعاينة" الخاصة بي أثناء السحب.عندما أنقر على الزر "تغيير الخط..."، أظهر خطي
NSFontPanel
وعندما أختار خطًا، يجب أن يتغير في منطقة "المعاينة" الخاصة بي أيضًا.لنفترض أنني قمت بالنقر فوق لون زر منNSFontPanel
, ، أريد تغيير لون الخط الخاص بي.
في جوهر الأمر، أحاول أن أجعل كلتا اللوحتين الملونتين (على الرغم من ما رأيته من وجود لوحة مشتركة واحدة فقط لكل تطبيق) تعملان بشكل مستقل.
الآن، لنفترض أنني فتحت لوحات الخط واللون.عندما أنقر على بئر الألوان في نافذتي يتم تنشيطه، ثم إذا قمت بالنقر على زر اللون في لوحة الخطوط فإن اللون لا يؤثر على الخط بل على الخلفية، حيث تظل بئر الألوان نشطة ولأنني قمت بالتسجيل لتغيير اللون الإخطارات في فئة وحدة التحكم الخاصة بي.
هل يمكن لأحد أن يعطيني مثالاً على طريقة محددة لتشفير هذا النوع من السلوك؟يبدو أن هناك مجموعة من الطرق المختلفة لصنع NSFontPanel
و NSColorPanel
اظهر (NSFontPanel
أو NSFontManager
?)، بالإضافة إلى العديد من الطرق للتعامل مع الأحداث القادمة من اللوحات نفسها (الإخطارات؟مندوبين (على NSFontManager
أو NSFontPanel
)؟إدخال وحدة التحكم في سلسلة المستجيب؟).لم أجد أي إرشادات حول الطريقة المثالية للتعامل مع أكثر من مصدر لون واحد في وقت واحد وأنا ضائع قليلاً.
شكرا لك مقدما!
المحلول
تم تصميم آلية منتقي الألوان خصيصًا بحيث يمكنك "تنشيط" عدة صناديق ألوان، ثم ضبط ألوانها في وقت واحد.أعتقد أن السبب وراء عدم "ترك" زر الألوان في لوحة الخطوط لمنتقي الألوان هو أنه على ما يبدو ليس "بئر ألوان" في الواقع.لم ألاحظ هذا السلوك بشكل مباشر ولكن يمكن تكراره بسهولة باستخدام xib جديد بسيط مع بئر ألوان وعرض نص قياسي.
بشكل أساسي، يمكنك النقر فوق كل من البئر ولون الخط وسيتغير كل من البئر والنص المحدد إلى اللون المختار.يمكنك أيضًا إيقاف تشغيل البئر وسيتغير النص فقط.ومع ذلك، لا يمكنك جعل لوحة الخطوط "تترك" منتقي الألوان حتى تقوم بإغلاق لوحة الخطوط.
سأسمي هذا خطأ: http://bugreport.apple.com