2010-01-25 37 views

回答

4

執行此操作的標準方法是選項返回,它可以免費使用。

+0

是我的要求是Shift + Enter ...像Skype的時候,我們鍵入消息,然後Shift + Enter作品 – 2010-01-25 06:21:52

0

另外,如果文本視圖比您的應用程序更適合文本字段,那麼這就是您應該使用的。

我寫了一個可以發送動作消息的東西。這裏的the headerthe implementation。它在a BSD license之下。

+0

它工作一段時間......有一段時間它不是工程....當作品則只有工作第一次...它適用於數字鍵附近的輸入鍵....但是狗屎+輸入仍然是問題 – 2010-01-25 09:37:06

+0

任何告訴我們..按Shift鍵? – 2010-01-25 09:51:27

+0

option + enter仍然不能正常工作 – 2010-01-25 10:05:53

0

感謝彼得它的工作 我在代碼 int add = [event modifierFlags]; BOOL shift =(flags & NSShiftKeyMask)?是:否;

if (([event keyCode] == enterKey1 || [event keyCode] == enterKey2) && !shift) { 
    window = [self window]; 
    [window makeFirstResponder:[window contentView]]; 

    [NSApp sendAction:action to:target from:self]; 
} 

但現在能夠對文本框的行動 後,將焦點設置texView我使用[文本框selecttext]

for TextView我試過[theTextView setSelectedRange:NSMakeRange(0,0)]; 但不工作

0

我是這樣做的:內NSTextFieldDelegatecontrol:textView:doCommandBySelector:,捕捉insertNewline:命令,並檢查當前事件Shift修飾符標誌。

- (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector { 
    if (commandSelector == @selector(insertNewline:) && 
     [[[NSApplication sharedApplication] currentEvent] modifierFlags] 
     & NSShiftKeyMask) { 

     [fieldEditor insertNewlineIgnoringFieldEditor:self]; 
     return YES; 
    } 

    return NO; 
} 
1

有了這個代碼,當用戶按下回車鍵,你可以發送例如一個意見的關鍵,當用戶按下Shift + Enter鍵執行NSTextView的默認行爲,它是插入一個換行符鍵。在我看來,這是比在這種情況下使用NSTextField更好的解決方案。

- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector { 
    if (aSelector == @selector(insertNewline:)) { 
     NSEvent * event = NSApp.currentEvent; 
     if ((event.modifierFlags & NSShiftKeyMask) != NSShiftKeyMask) { 
      //Do some when only the enter key is pressed 
      return YES; 
     } 
    } 
    return NO; 
} 
相關問題