NSTextView не прокручивается при создании с помощью NSCollectionView

У меня есть NSTextView, который находится в представлении, которое является представлением NSCollectionViewItem. Я даю пользователю возможность скрыть NSTextView и вместо этого вызвать объект NSView на его месте в том же представлении.

Однако, когда я запускаю программу со скрытым и перекрывающим NSTextView объектом NSView, прокрутка в NSTextView работает неправильно; Вертикальная полоса прокрутки присутствует и регулирует свой размер в соответствии с размером содержимого в NSTextView. Однако фактическая прокрутка работает только при выделении содержимого NSTextView и перетаскивании вверх или вниз. Более того, если я воссоздаю представление без его подключения к NSCollectionViewItem и NSCollectionView, оно отлично прокручивается. Это проблема, которая возникает не только с пользовательским представлением, которое у меня есть, перекрывающим NSTextView, но и с любым объектом представления (кнопки, области изображений и т. д.), который перекрывает NSTextView, даже если объект представления установлен как скрытый.

Почему прокрутка возможна только при выделении и перетаскивании вверх или вниз, если NSTextView создается с помощью NSCollectionView и есть объект представления, перекрывающий его?


person Zag    schedule 11.03.2014    source источник


Ответы (1)


Что ж, я нашел решение, которое не имеет большого смысла, но, похоже, работает нормально. Я создал подкласс NSTextView и переопределил mouseEntered следующим образом:

-(void) mouseEntered:(NSEvent *)theEvent {

    NSScrollView *scrollView=(NSScrollView*)self.superview.superview;
    NSScroller *scroller=scrollView.verticalScroller;
    [scrollView setVerticalScroller:nil];
    [scrollView setVerticalScroller:scroller];
}

Если у кого-то есть какие-либо идеи относительно того, почему возникает эта проблема, или лучшее решение, а не просто догадки, пожалуйста, напишите об этом.

person Zag    schedule 21.03.2014