سؤال

وأنا أحاول أن استخدام NSFontPanel للسماح للمستخدم لتغيير بيئة الخط على نطاق التطبيق. ومن المفترض أن يعمل شيئا من هذا القبيل: قيام المستخدم بالنقر فوق الزر، لوحة الخط للملوثات العضوية الثابتة، واختيار الخط والحجم، واستمر اختيارهم

والتعليمة البرمجية التالية تعرض اللوحة:

- (IBAction)showFontMenu:(id)sender {
    NSFontManager *fontManager = [NSFontManager sharedFontManager];
    [fontManager setDelegate:self];

    NSFontPanel *fontPanel = [fontManager fontPanel:YES];
    [fontPanel makeKeyAndOrderFront:sender];
}

وثائق ويبدو أن تشير إلى أن changeFont: ينبغي أن تسمى (معرف) طريقة المرسل عند تغيير الخط. هذا لا يحدث في حالتي.

- (void)changeFont:(id)sender {
    // blah
}

وأي أفكار حول ما يمكن أن تقوم به خطأ؟

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

المحلول

والكائن التي قمت بتحديدها -changeFont: على يجب على المستجيب الأول أو فوقه في سلسلة الرد. لم تقم بتحديد حيث قمت تعريف الأسلوب، ولكن أفترض انها على كائن تحكم غير موجود في سلسلة الرد.

نصائح أخرى

وتشمل هذه:

[fontManager setTarget:self];

ومندوب NSFontManager وجود في المقام الأول لتصفية الخطوط التي يقدمها إلى لوحة الخط عبر -fontManager:willIncludeFont:.

وكما kperryua يذكر، يتم إرسال -changeFont: في سلسلة الرد. الزر الذي يطلق القائمة الخط أو عرض إرفاق لها قد يكون مكانا جيدا لوضع المستجيب ل-changeFont:.

وقد تجد الخط مناولة دليل هامشي أكثر فائدة من rel="nofollow لوحة الخط الدليل.

والمشكلة الأساسية هي هذا السطر:

[fontPanel makeKeyAndOrderFront:sender];

ومن خلال جعل لوحة الخط النافذة الرئيسية، وانها حصلت على أي فكرة عن مكان لإرسال رسائل العمل مثل -changeFont: ل

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