Как нарисовать фокусировочное кольцо вокруг NSBox на фокусе дочернего NSTextView в target-c - PullRequest
7 голосов
/ 27 июня 2011

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

Спасибо,

1 Ответ

1 голос
/ 12 апреля 2013

Для этого создайте подкласс 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:

enter image description here

...