如何在Objective-c中的子NSTextView焦点上围绕NSBox绘制焦点环

时间:2011-06-27 12:58:12

标签: cocoa nstextview nsbox focusrect

我在NSBox中有一个NSTextView。我想在NSTextView获得焦点时立即通过NSBox绘制焦点环,并在NSTextView失去焦点后立即移除焦点环。

谢谢,

1 个答案:

答案 0 :(得分:1)

为此,请创建NSTextView的子类,并覆盖-becomeFirstResponder,如下所示:

- (BOOL)becomeFirstResponder
{
    BOOL returnValue = [super becomeFirstResponder];
    if (returnValue) {
        //do something here when this becomes first responder
    }

    return returnValue;
}

您可以在上面的if语句中设置NSNotification,以便在运行该代码块时,可以调用包含NSBox的视图,然后在NSBox上绘制一个焦点环。要处理失去焦点的NSTextView,你需要覆盖-resignFirstResponder,如下所示:

- (BOOL)resignFirstResponder
{
    BOOL returnValue = [super resignFirstResponder];
    if(returnValue){
        //do something when resigns first responder

    }
    return returnValue;
}

请务必在界面构建器中更改类,并将标题和/或实现文件中的类类型更改为NSTextView的新子类:

enter image description here