在正常情况下,蓝色的反转会出现在NSTextField对象外部,该对象成为第一个响应者,如下图所示:
link for Normal Case
但是,我得到的NSTextField外面没有蓝色边框。那是为什么?
以下是它如何happerns:
1 GT;我创建了一个典型的MAC OS应用程序
2 - ;我通过调用相应视图的 addSubview:和 removeFromSuperview 方法来切换应用程序的子视图。
3 GT;在一个子视图中(实际上是上面引用的图像),我单击“下一步”按钮。它的动作是这样的(在子视图的控制器.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的蓝色边框将不再出现!
有人知道我做错了什么吗?非常感谢你!
答案 0 :(得分:0)
也许我做错了编程,所以很少有人遇到这个问题 我找到了解决这个问题的方法。我提到所有(或大多数?)图形更改应该在博客的主线程中完成。因此,我将“if(success)”更改为:
if(success){
dispatch_async(dispatch_get_main_queue()' ^{
[[self view] removeFromSuperview];
[self sendMessageToSuperview:@"Add Next View"];
});
}
解决了,聚焦环回来了。