【发布时间】:2013-03-07 03:03:48
【问题描述】:
在正常情况下,一个蓝色的矩形会出现在成为第一响应者的 NSTextField 对象之外,如下图:
link for Normal Case
但是,我得到了一个没有蓝色边框的 NSTextField。这是为什么呢?
它是这样发生的:
1> 我创建了一个典型的 MAC OS 应用程序。
2> 我通过调用相应视图的 addSubview: 和 removeFromSuperview 方法来切换应用的子视图。
3> 在一个子视图(实际上是上面引用的图像)中,我单击“下一步”按钮。它的动作是这样的(在子视图的控制器 .m 文件中定义):
- (IBAction)actionNextClicked:(id)sender{
//_hdlThreadNext is a NSThread object
[[_hdlThreadNext alloc] initWithTarget:self selector@selector(threadNext:) object:nil];
[_hdlThreadNext start];
}
线程是这样的:
- (void)threadNext:(id)sender{
@autoreleasepool{
BOOL success;
[CATransation begin];
/* send username and password and decrypt responce */
... // balabala... and set "success"
if (success){
[[self view] removeFromSuperview];
[self sendMessageToSuperview:@"Add Next View"]; // Superview's method, telling superview to call addSubview: to add another subview
}
else{
/* Nothing special to do */
}
[CATransation commit];
}
}
4> 子视图切换到另一个。它的组合视图似乎还可以:image for combo view
但是其他 NSTextView 的蓝色边框不会再出现了!
有没有人知道我做错了什么?非常感谢!
【问题讨论】:
标签: xcode macos nsthread nstextfield