Mam prostą aplikację do czatu z NSTableView opartym na widoku tekstowym, jak widać na poniższym obrazku. Każda wiadomość zawiera instancję klasy NSTextView, której wysokość pasuje do całego tekstu.Sposób wywoływania metody autoscroll NSScrollView programowo
Wszystko, czego potrzebuję, to uruchomić NSScrollView (którego instancja NSTableView jest otoczona) autoscrolling, podczas gdy użytkownik zaznacza mysz wystarczająco przeciągającą tekst. Niestety autosportowanie się nie pojawia. W przypadku przeciągania gdzieś poza widoki tekstowe wszystkie kończą się pomyślnie.
Próbowałem zadzwonić autoscroll:
-method bezpośrednio po prostu wcisnąć NSEvent
-instance z NSTextView
-subclass "myszy przeciągać" -event (jak w przykładzie z this article):
- (void)mouseDragged:(NSEvent *)event
{
[self.scrollView autoscroll:event];
}
Jak już overrode wszystko zdarzenia myszy i zaimplementowane wszystkie wybieranie tekstu, ta metoda często wywołuje. Ale autoscrolling nie działa.
UPDATE
zorientowali się, że przed wywołaniem -autoscroll:
-method musi istnieć -mouseDown:
z tego samego obiektu. Ale łamie mój mechanizm wyboru tekstu. Chodzi o to, że nawet nie będąc pierwszym ratownikiem, nie może być nic innego, jak tylko metoda.
Jeśli mówisz, że z NSTableView wewnątrz NSScrollView i wiersze NSTableView są wieloliniowe, a podczas zaznaczania tekstu w komórce i przeciągania w dół poniżej dolnej części widoku przewijania, nie przewija? Jeśli tak, ta funkcja jest zapewniona automatycznie przez NSScrollView i nic więcej nie jest potrzebne do przewijania, aby wystąpił podczas wybierania. Aby przetestować, utworzyłem nowy projekt, dodałem NSScrollView (NSTableView), ustawiłem wysokość wiersza większą niż widok przewijania i wypełniłem widok tabeli. Kliknięcie tekstu, a następnie zaznaczenie w dolnej części przewijania. Przewija się automatycznie. – Jay
@Jay muszę uruchomić NSTableView przewijanie autoscrolling widok, a nie widok tekstu jeden (widok tekstowy ma wysokość wystarczającą do dopasowania tekstu). – Astoria
Nie jestem pewien, o co pytasz. Zakładając, że zaimportujesz NSTableView z Biblioteki obiektów do okna w Xcode, NSTableView zostanie zamknięty przez NSScrollview.Jeśli próbujesz wybrać tekst w wierszu w widoku tabeli, klikając myszą w wierszu, w którym znajduje się tekst i przeciągając w dół (jak widać na ekranie, otaczający NScrollView obsługuje to automatycznie i przewinie w górę, aby możesz kontynuować zaznaczanie tekstu – Jay