Как нарисовать фокусировочное кольцо вокруг NSBox на фокусе дочернего NSTextView в target-c

У меня есть один NSTextView в NSBox. Я хочу нарисовать кольцо фокусировки вокруг NSBox всякий раз, когда NSTextView получил фокус, и удалить кольцо фокусировки, как только NSTextView потерял фокус.

Спасибо,

1 ответ

Для этого создайте подкласс NSTextView и переопределите -becomeFirstResponder следующим образом:

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

    return returnValue;
}

Вы можете настроить NSNotification в приведенном выше операторе if, чтобы при запуске этого блока кода вызывалось ваше представление, содержащее NSBox, и впоследствии рисовало кольцо фокусировки на NSBox. Чтобы справиться с потерей фокуса NSTextView, вам нужно переопределить -resignFirstResponder, например так:

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

    }
    return returnValue;
}

Обязательно измените класс в конструкторе интерфейсов и измените тип вашего класса в заголовке и / или файлах реализации на новый подкласс NSTextView:

Другие вопросы по тегам