2017-09-08 4 views
0

Ich habe eine editierbare UITextView. Wenn ich ziehen Text aus dieser Ansicht und legen Sie es auf sich selbst, den Text bewegt sich aber die folgenden beiden Methoden werden nicht genannt:Drag & Drop auf UITextView in iOS 11

textView:shouldChangeTextInRange:replacementText: 
textViewDidChange: 

Was soll ich tun, wenn ich einige Aufgaben ausführen möchten (Beispiele rückgängig machen Registrierung oder Aktualisieren des zugehörigen UIDocuments) nachdem der Text verschoben wurde? Vielen Dank im Voraus.

Antwort

1

Sie können Ihre Textview ist textDragDelegate auf Selbst gesetzt und

- (void)textDraggableView:(UIView<UITextDraggable> *)textDraggableView dragSessionDidEnd:(id<UIDragSession>)session withOperation:(UIDropOperation)operation; 

oder ein anderes geeignetes Verfahren aus UITextDragDelegate implementieren.

Edit:

Eigentlich in Ihrem Fall textDropDelegate kann eine bessere Lösung als neuen Text kann von einer anderen Anwendung kommen.

Ein geeignetes Verfahren von dort scheint

- (void)textDroppableView:(UIView<UITextDroppable> *)textDroppableView willPerformDrop:(id<UITextDropRequest>)drop; 
+0

In der Tat, Ihr ursprünglicher Vorschlag zu sein, das heißt, textDraggableView: dragSessionDidEnd: withOperation :, löst mein Problem. Meine Textansicht ermöglicht nur die Verschiebung von Text, der von sich selbst gezogen wurde. Daher kann es feststellen, ob der Text von selbst stammt, indem das Operationsargument überprüft wird. Ich war mir dieser Methode nicht bewusst. –

+3

Aber ich fühle mich immer noch verwirrt, warum die Drop-Operation nicht TextView auslöst: sentChangeTextInRange: replacementText: und textViewDidChange :. Es macht keinen Sinn. –