سؤال

أولا؛أنا مبتدئ تمامًا في Cocoa، لذا من فضلك اسمح لي بطرح ما أنا متأكد من أنه سؤال جديد تافه ومطلق.

حالتي هي كما يلي:أريد التوسع في وظائف NSTextField.ومن بين الأشياء التي أريد تحقيقها هو:

تغيير شكل ومظهر علامة الإقحام.

اكتشاف متى يصل النص إلى عدد معين من الأحرف ومن ثم تلوين النص بعد ذلك الحد بشكل مختلف.*

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

سأكون ممتنًا للغاية إذا قدم لي شخص ما مثالاً عمليًا لفئة فرعية تحقق أحد الأمرين المذكورين أعلاه، وتعليمات* حول كيفية تنفيذ الكود حتى أتمكن من محاولة معرفة كيفية عمله من خلال النظر في بعض الكود المباشر الفعلي


أنا أعتذر بشدة عن ردي المتأخر!

الاعتذار لكم جميعا.لدي طفل مغص في المنزل، وكما يمكنك (أو على الأقل أولئك الذين لديهم أطفال) أن تتخيلوا أن هذا يستغرق الكثير من الوقت المتاح لديك.شكرا لكم جميعا على ردودكم.

أرى أن إحدى مشكلاتي الرئيسية هي أنني لا أملك الفهم الكافي للمندوبين والمنافذ.لقد اشتريت الكتاب الموصى به هنا (والعديد من الأماكن الأخرى.نوع ما من "الكتاب المقدس" أجمعه) وأنا أبحث فيه بينما نتحدث في ساعات الصمت القليلة التي أقضيها هذه الأيام.:)

ولكن على الرغم من أنني أرى أنها ستكون أداة لا غنى عنها بالنسبة لي، إلا أنني لا أزال أكتسب الفهم الأكبر من دراسة الأمثلة بدلاً من قراءة النظرية* ولذا سأكون ممتنًا للغاية إذا قام شخص ما بإنشاء مشروع بفئة فرعية مناسبة من الفئة ذات الصلة لأنني أفهم أنه من المحتمل ألا أقوم بتوسيع فئة NSTextfield؟

سأقوم على الفور بوضع علامة على مشاركة Mark Thalmans كإجابة لأنني متأكد من أنها استجابة مناسبة "للدمى"، لكنني سأنتظر لبضعة أيام لأنني أرغب حقًا في الاطلاع على الملف.لكنني لست جاحداً!

اه و؛من فضلكم صدقوني يا رفاق عندما أقول إنني لست عديم الفائدة تمامًا في اللغات التي أعرفها بالفعل.إن الأمر مجرد أن هذه المفاهيم المتعلقة باتصال Interface Builder وواجهات المستخدم الرسومية بالرمز غير معروفة جدًا بالنسبة لي.عادةً ما أكتب الكود وأحتفظ به عند هذا الحد.


*نعم، أول مشروع تدريبي صغير لي هو بالفعل إحدى أدوات Twitter المساعدة.

* مثل الطفل

*لا يعني ذلك أن قراءة النظرية لم تكن ذات قيمة كبيرة بالنسبة لي أيضًا.لن أكون حيث أنا بدون دليل Colin Moock النهائي لـ AS3

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

المحلول

ومارتن،

ولقد بدأت مع الحوار "ملف جديد" واختار "الكاكاو" على اليسار ثم الطبقة الهدف-C.

وهذا سيولد التعليمة البرمجية التالية، من دون تعليق. ثم كل ما عليك القيام به هو تغيير NSObject في خط "interface" من الرأس إلى "NSTextView" وكان لديك فرعية العمل. إذا كنت تستخدم كسكودي 3.0 يمكنك الذهاب إلى واجهة البناء والتغيير فئة من NSTextField إلى "MyTextView".

ويجب عليك أيضا التقاط آرون هيليغاس "كتاب" البرمجة الكاكاو لنظام التشغيل Mac OS X، الطبعة الثالثة "وقد النحل تحديث ليوبارد، إذا لم تقم بذلك بالفعل.

وحظا سعيدا.


#import <Cocoa/Cocoa.h>


@interface MyTextView : NSTextView {
 // Outlets & Members go here
}
// Actions & messages go here
@end


#import "MyTextView.h"


@implementation MyTextView

@end

نصائح أخرى

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

NSTextField خاص، لأنه لا يقوم فعليًا بتنفيذ تحرير النص.يتم ذلك عن طريق مشاركة (لكل نافذة) NSTextView, ، معروف ب محرر ميداني.يمكنك توفير محرر ميداني خاص لشيء معين NSTextField.يتم ذلك بشكل قانوني عن طريق التصنيف الفرعي NSWindow (!) والتغلب -fieldEditor:forObject:.عندما كنت أبحث عن هذا، على أية حال، وجدت NSTextFieldCell-setUpFieldEditorAttributes: الطريقة، والتي تبدو كما لو أنها يمكن أن تُرجع محررًا ميدانيًا مختلفًا عن الذي تم تسليمه لها.

اقتراحات للقراءة: موضوعات التحكم وبرمجة الخلايا للكاكاو, نظرة عامة على نظام النص.

  1. إذا كان عليك بالفعل تصنيفها ضمن فئة فرعية، فيجب عليك تصنيفها ضمن فئة فرعية NSTextFieldCell.معلومات عن NSCells نكون متوفر على الانترنت.

  2. لا تقم بتصنيف الخلية إلى فئة فرعية إذا لم يكن ذلك ضروريًا تمامًا.استخدم ال أساليب التفويض.

  3. على الأقل يمكن تغيير اللون باستخدام NSTextFieldالارتباطات, ، استخدم تلك.

وأنت قد تكون قادرة على الحصول على بعض الوظائف المطلوبة مع المنسق أيضا.

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