我正在Xcode中为MacOSX开发应用程序
这是一个屏幕,其中包含一组NSTextFields可选择并可编辑所有这些
每次按Tab键时,都会按顺序从NSTextField更改为NSTextField ...
现在我想通过点击任何NSTextField的外部删除textfield的第一响应者,或者当我转到NSWindowController的最后NSTextField时,我们称之为 descripcionBitacoraTextField
据我所知,这是一种名为
的方法- (void)controlTextDidEndEditing:(NSNotification *)aNotification
我在那里添加了下一个代码
- (void)controlTextDidEndEditing:(NSNotification *)aNotification{
NSTextField *textField = (NSTextField *)[aNotification object];
if (textField == self.descripcionBitacoraTextField) {
[[textField window] makeFirstResponder:nil];
}
}
当我完成编辑任何textField时触发,但是当我按Tab键完成最后一个NSTextField时,它开始将我的第一个NSTextField像无尽的转盘一样聚焦
答案 0 :(得分:1)
点击外面:
-(void)mouseDown:(NSEvent *)event {
[self.window makeFirstResponder:nil];
}
如果您想在退出NSTextField时退出,则可以:
-(BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector{
NSTextField *textField = (NSTextField *) control;
if (commandSelector == @selector(insertTab:) && (textField == self.descripcionBitacoraTextField)) {
[self.window makeFirstResponder:[[textView window]nextResponder]];
return YES;
}
else if (commandSelector == @selector(insertTab:)){
[self.window makeFirstResponder:[self.contentView viewWithTag:(textField.tag +1)]];
return YES;
}
return NO;
}