当我的用户名文本字段具有焦点并且我输入了一些内容时,我在将焦点放在我的密码 NSTextField 上时遇到了一些问题。当我单击密码文本字段时,什么也没有发生,焦点仍然保留在用户名文本字段上。现在,当我清除用户名文本字段中的文本然后单击密码字段时,焦点正在切换。
很简单,如果用户名文本字段有焦点并且有文本,我无法将焦点切换到密码文本字段(通过任何方法、单击、点击选项卡等)。如果我清除文本,我可以毫无问题地切换。
我的项目设置
这是我的视图结构
MainViewController (subclass of NSViewController)
|
|
Window (NSWindow)
|
|
------ LoginView (Subclass of NSView)
| |
| |
| ------ UsernameTextField (NSTextField)
| |
| |
| ------ PasswordTextField (NSTextField)
|
|
------ MainView (subclass of NSView)
|
|
And other views (NSView)
我的应用程序中有 3 个屏幕,并且我创建了 3 个 NSView 子类来绘制这些视图。LoginView 是这些视图中的第一个。LoginView 有 2 个有问题的文本字段。
我正在使用界面构建器完成整个 UI,因此代码中没有什么可显示的。
这就是我将 LoginView 添加到 MainViewController 窗口的方式
@implementation MainViewController
------
------
-(void)awakeFromNib {
[[self window] setContentSize:[self.loginView frame].size];
[[[self window] contentView] addSubview:self.loginView];
[[[self window] contentView] setWantsLayer:YES];
}
----
----
@end
我试图实现 NSTextFieldDelegate,
@implementation LoginView
-----
-----
- (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor{
return YES;
}
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor{
return YES;
}
-----
-----
@end
每当焦点切换时,就会调用这些方法。但是在没有焦点切换的情况下,委托方法不会触发。
任何想法?