aufrufen Ich habe einfache Chat-Anwendung mit Textnachrichten View-based NSTableView, wie Sie auf dem Bild unten sehen können. Jede Nachricht enthält eine NSTextView-Instanz mit einer Höhe, die dem gesamten Text entspricht.Wie NSScrollView Autoscroll-Methode programmgesteuert
Alles, was ich brauche, ist NSScrollView (welche NSTableView-Instanz eingeschlossen ist) Autoscrolling zu starten, während der Benutzer den Text auswählt und die Maus weit genug zieht. Leider wird Autoscrolling nicht angezeigt. Im Falle eines Ziehens irgendwo außerhalb der Textansichten sind alle erfolgreich.
Ich habe versucht, indem man einfach autoscroll:
-Methode direkt NSEvent
-instance von NSTextView
-subclass -event (von this article wie in Beispiel) "Maus gezogen" Push anrufen:
- (void)mouseDragged:(NSEvent *)event
{
[self.scrollView autoscroll:event];
}
Wie ich overrode habe alle Mausereignisse und implementiert die gesamte Textauswahl, ruft diese Methode oft auf. Aber das Autoscrolling scheint nicht zu funktionieren.
UPDATE
Ich fand heraus, dass -autoscroll:
vor dem Aufruf -Methode dort -mouseDown:
des gleichen Objekts sein muss. Aber es bricht meinen Textauswahlmechanismus. Der Punkt sogar nicht als Ersthelfer, es muss nichts als die mouseDown:
-Methode sein.
Wenn Sie sagen, dass mit einer NSTableView innerhalb einer NSScrollView und die NSTableView Zeilen sind mehrzeilig, und wenn Sie Text innerhalb einer Zelle auswählen und ziehen Sie unter dem unteren Rand der Bildlaufansicht, es scrollt nicht? Wenn dies der Fall ist, wird diese Funktionalität automatisch von NSScrollView bereitgestellt und es ist nichts anderes erforderlich, damit während der Auswahl ein Bildlauf ausgeführt werden kann. Zum Testen habe ich ein neues Projekt erstellt, eine NSScrollView (NSTableView) hinzugefügt, die Zeilenhöhe größer als die Bildlaufansicht festgelegt und die Tabellenansicht gefüllt. Klicken Sie auf Text und wählen Sie dann den unteren Teil des Bildlaufs aus. Es scrollte automatisch. – Jay
@Jay Ich muss NSTableView scroll view Autoscrolling, nicht die Textansicht starten (die Textansicht hat Höhe genug, um den Text zu passen). – Astoria
Ich bin mir nicht sicher, was Sie fragen. Unter der Annahme, dass Sie ein NSTableView von der Objects Library auf das Fenster in Xcode eindrohen, wird das NSTableView von einer NSScrollview eingeschlossen.Wenn Sie versuchen, den Text in einer Zeile in einer Tabellenansicht auszuwählen, indem Sie mit der Maus in die Zeile klicken, in der sich der Text befindet, und nach unten ziehen (so wie es auf dem Bildschirm angezeigt wird), wird dies automatisch vom umschließenden NScrollView übernommen Sie können fortfahren, den Text zu wählen. – Jay