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

Ami*_*Sri 7 cocoa nstextview focusrect nsbox

我在NSBox中有一个NSTextView.每当NSTextView获得焦点时,我想在NSBox上绘制焦点环,并在NSTextView失去焦点后立即移除焦点环.

谢谢,

cor*_*ryb 1

为此,创建 NSTextView 的子类,并重写 -becomeFirstResponder ,如下所示:

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

    return returnValue;
}
Run Code Online (Sandbox Code Playgroud)

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

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

    }
    return returnValue;
}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述