Skip navigation.
 
mlRe: Custom field editors
FROM : John Stiles
DATE : Tue Jan 08 18:56:27 2008

Well, true. In this case we know the client is a subclasser (that's what
the example is about). But I didn't realize that's how designated
initialization was meant to work. Thanks for the info.


Ken Ferry wrote:
> No, it's always fine to call any init method unless specifically
> documented otherwise.
>
> Designated initializers are something that subclassers care about, not
> clients of a class.  The contract is that every init method of a class
> is guaranteed to funnel through one of the designated initializers.
> Thus, a subclasser (that needs to do initialization) must override all
> of the designated initializers of its superclass, but need not
> override any of the non-designated initializers.
>
> -Ken
>
> On 1/4/08, John Stiles <<email_removed>> wrote:


>> Actually, I'd like to point out what appears to be another, more subtle
>> bug in this example code.
>>
>> It uses "-init" to initialize the custom field editor—however, custom
>> field editors should almost certainly be subclasses of NSText, and so
>> they should use the designated initializer "-initWithFrame:". Right?
>>
>>
>> John Stiles wrote:
>>   

>>> Cool, thanks for filing it on my behalf :)
>>> I had been running under the assumption that the sample snippet was
>>> too simple, so fortunately the code I just wrote is not bogus… thanks!
>>>
>>>
>>> Aki Inoue wrote:
>>>     

>>>> Yes, admittedly, the sample code is probably too simplified.
>>>>
>>>> Usually you should store your custom field editor instance somewhere
>>>> and have mapping mechanism between the editor and window/object.
>>>>
>>>> Also, another issue with this sample is that it's returning the
>>>> custom editor for all NSTextField subclasses and could cause issues
>>>> if there is an NSTextField subclass that already requires its own
>>>> NSTextView subclass.
>>>>
>>>> It should selectively return the custom field editor.
>>>>
>>>> I filed a bug 5670642 for requesting tech document improvement.
>>>>
>>>> Thanks,
>>>> Aki
>>>>
>>>> On 2008/01/04, at 11:35, John Stiles wrote:
>>>>
>>>>       

>>>>> I'm looking at creating a custom field editor (so I can filter out
>>>>> keystrokes in various types of controls in a consistent way).
>>>>> The text editing programming guide has a section called "How to
>>>>> Substitute a Custom Field Editor", with an example snippet which
>>>>> seems nice and simple:
>>>>>
>>>>>         

>>>>>> (id)windowWillReturnFieldEditor:(NSWindow *)sender
>>>>>> toObject:(id)anObject
>>>>>> {
>>>>>>    if ([anObject isKindOfClass:[NSTextField class]])
>>>>>>    {
>>>>>>        return [[[myCustomFieldEditor alloc] init] autorelease];
>>>>>>    }
>>>>>>    return nil;
>>>>>> }
>>>>>>           

>>>>> (Admittedly, there are two problems in the code—no leading hyphen
>>>>> and a lowercase class name—but I'm going to let that slide for now :) )
>>>>> However, according to the docs for
>>>>> -windowWillReturnFieldEditor:toObject:, this code is actually broken:
>>>>>
>>>>>         

>>>>>> Discussion
>>>>>> This method may be called multiple times while a control is first
>>>>>> responder. Therefore, you must return the same field editor object
>>>>>> for the control while the control is being edited.
>>>>>>           

>>>>> This seems to directly contradict the sample code above, so which is
>>>>> correct? I'll happily file it, but I just wanted to run this past
>>>>> someone who might have already been down this road before.
>>>>> _______________________________________________
>>>>>
>>>>> Cocoa-dev mailing list (<email_removed>)
>>>>>
>>>>> Please do not post admin requests or moderator comments to the list.
>>>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>>>>
>>>>> Help/Unsubscribe/Update your Subscription:
>>>>> http://lists.apple.com/mailman/options/cocoa-dev/<email_removed>
>>>>>
>>>>> This email sent to <email_removed>
>>>>>         

>> _______________________________________________
>>
>> Cocoa-dev mailing list (<email_removed>)
>>
>> Please do not post admin requests or moderator comments to the list.
>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/cocoa-dev/<email_removed>
>>
>> This email sent to <email_removed>
>>
>>

Related mailsAuthorDate
mlCustom field editors John Stiles Jan 4, 20:35
mlRe: Custom field editors Aki Inoue Jan 4, 20:54
mlRe: Custom field editors John Stiles Jan 4, 21:02
mlRe: Custom field editors John Stiles Jan 5, 01:27
mlRe: Custom field editors Ken Ferry Jan 8, 09:31
mlRe: Custom field editors John Stiles Jan 8, 18:56