Как нарисовать фокусировочное кольцо вокруг 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: