Я думаю, вы можете это сделать, реализовав метод делегирования текстового поля, controlTextDidEndEditing и проверив размер текста. Я обнаружил, что размер, возвращаемый sizeWithAttributes: не соответствует размеру, который я ожидал бы при заполнении текстового поля, поэтому я просто определил значение, которое мне нужно для выражения if if эмпирически (в этом примере у меня было значение значения текстового поля к свойству, theText).
-(void)controlTextDidEndEditing:(NSNotification *)obj {
NSLog(@"%@",NSStringFromRect([obj.object frame]));
NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSFont systemFontOfSize:13] forKey:@"NSFontAttributeName"];
NSSize size = [theText sizeWithAttributes:dict];
NSLog(@"%@",NSStringFromSize(size));
if (size.width >69) {
[obj.object setToolTip:theText];
}
}