2014-06-23 100 views
0

林開發在Xcode 5獲取當前的第一響應者

用於MacOSX的應用程序我有一組的NSTextField的,其按TAB分享焦點或回車鍵,當我去到最後一個元素,我送焦點我NSWindow按Tab鍵爲好,事情是......我想再次按選項卡進入第一的NSTextField,但我不能,這是我的代碼

-(BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector{ 

    NSTextField *textField = (NSTextField *) control; 

    if ((commandSelector == @selector(insertTab:) || commandSelector == @selector(insertNewline:)) && (textField == self.descripcionBitacoraTextField)) { 
     [self.window makeFirstResponder:[[textView window]nextResponder]]; 

     return YES; 
    } 
    else if(commandSelector == @selector(insertTab:) || commandSelector == @selector(insertNewline:)){ 
     [self.window makeFirstResponder:[self.contentView viewWithTag:(textField.tag +1)]]; 

     return YES; 
    } 

    return NO; 
} 

在這種情況下,我最後的NSTextField是descripcionBitacoraTextField,當我到達那裏並再次按Tab或Enter時,我失去了所有控件的焦點,但我想通過按Tab再次激活它,我想trac ķ其控制具有FirstResponder控制,但我不知道我怎麼

任何幫助會感激

回答

1

只需更換:

-(BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector{ 

    NSTextField *textField = (NSTextField *) control; 

    if ((commandSelector == @selector(insertTab:) || commandSelector == @selector(insertNewline:)) && (textField == self.descripcionBitacoraTextField)) { 
     [self.window makeFirstResponder:nil]; 

     return YES; 
    } 
    else if(commandSelector == @selector(insertTab:) || commandSelector == @selector(insertNewline:)){ 
     [self.window makeFirstResponder:[self.contentView viewWithTag:(textField.tag +1)]]; 

     return YES; 
    } 

    return NO; 
} 

我只是設置

[self.window makeFirstResponder:nil]; 

代替你的

[self.window makeFirstResponder:[[textView window]nextResponder]]; 
+0

工作!謝謝 – Jesus

相關問題