IKImageBrowserView: как отобразить всплывающую подсказку для каждого элемента?
Я копался в документации, но не нашел, как это сделать. Как я могу добавить всплывающую подсказку для каждого элемента в IKImageBrowserView?
1 ответ
Решение
IKImageBrowserView является NSView, поэтому вы можете добавить прямоугольники всплывающей подсказки, используя следующие функции:
Для моей реализации у меня есть браузер изображений внутри прокрутки, размер которого не изменяется, поэтому мне нужно обновлять подсказки только тогда, когда мои данные изменяются с использованием этого кода, где images - это мой массив источника данных:
[imageBrowser reloadData];
[imageBrowser removeAllToolTips];
for (int i=0; i<[images count]; i++) {
NSRect rect = [imageBrowser itemFrameAtIndex:i];
ImageObject *image = [images objectAtIndex:i];
[imageBrowser addToolTipRect:rect owner:self userData:image];
}
Затем я реализовал эту функцию:
- (NSString*)view:(NSView *)view stringForToolTip:(NSToolTipTag)tag point:(NSPoint)point userData:(void *)data {
ImageObject *image = (ImageObject*)data;
return [image imageTitle];
}
Если ваш браузер изображений изменит свой макет (вы измените размер, добавив / удалив столбцы, или измените масштаб и т. Д.), Вам необходимо обновить все подсказки.