У меня есть TableView с NSTextView в качестве ячеек. это ситуация, когда у меня есть scrollView внутри scrollView. Теперь, когда я прокручиваю содержимое textView и когда содержимое textview достигает конца, я хочу, чтобы родительский scrollView (tableView) продолжал прокрутку. Но по умолчанию этого не происходит. Вместо этого родительский элемент вообще не прокручивается, когда указатель мыши находится внутри textView.
Я хочу добиться чего-то подобного в этом примере.
Это мое решение:
public class DisableableScrollView: NSScrollView {
public override func scrollWheel(with event: NSEvent) {
// Check if the text field is empty
if (self.subviews[0].subviews[2] as! NSTextView).textStorage?.length == 0 {
nextResponder?.scrollWheel(with: event)
}
// Bottom
else if self.verticalScroller?.floatValue == 1.00 {
if event.deltaY < 0 {
nextResponder?.scrollWheel(with: event)
}
else {
super.scrollWheel(with: event)
}
}
// Top
else if self.verticalScroller?.floatValue == 0.00 {
if event.deltaY > 0 {
nextResponder?.scrollWheel(with: event)
}
else {
super.scrollWheel(with: event)
}
}
else {
super.scrollWheel(with: event)
}
}
Но возникает проблема: когда я прокручиваю одно текстовое поле, прокручивается другое текстовое поле. нажмите здесь, чтобы см.
Тут проблема с Волшебной мышью. Если я использую обычную мощную мышь, все работает нормально. Но с волшебной мышью, когда я поднимаю палец после прокрутки, она продолжает прокручиваться (прокрутка импульса), но иногда прокручивает неправильный экземпляр textView. Согласно Документация Apple, для события колеса прокрутки есть два свойства: phase и momentumPhase. С помощью волшебной мыши после того, как я поднимаю палец вверх, фаза становится Завершенной, а momentumPhase становится Начальной.
Кто-нибудь знает стандартное решение этой проблемы? Или, если мой код правильный, что может пойти не так?