Sean Sean - 5 months ago 24
Objective-C Question

Anyway to make a (wrapping) NSTextField write a carriage return upon pressing return key?

I want to use a wrapping text field that can potentially contain carriage returns in my app. Is there any way to force the NSTextField object to write a carriage return into the text area instead of sending its action to its target when the Return key is pressed?


This is covered in Technical Q&A QA1454, which also enumerates reasons why one would use NSTextField instead of NSTextView in this case.

You can implement the following method in the text field delegate:

- (BOOL)control:(NSControl*)control
    BOOL result = NO;

    if (commandSelector == @selector(insertNewline:))
        // new line action:
        // always insert a line-break character and don’t cause the receiver
        // to end editing
        [textView insertNewlineIgnoringFieldEditor:self]; 
        result = YES;

    return result;