Я работаю над приложением, отличным от Mac Mail. У меня есть WebView, который позволяет пользователю писать новое сообщение. Я реализовал функцию перетаскивания, чтобы пользователь мог добавить вложение в сообщение таким образом.Отключить перетаскивание для WebView в пользу одного из своих супервизоров
Чтобы сделать его простым, у меня есть основной вид, который содержит WebView и другие виды. Я реализовал перетаскивание на этом основном представлении (с помощью методов draggingEntered: and performDragOperation:), и он работает так, как ожидалось.
Проблема заключается в том, что по умолчанию при перетаскивании файла внутри WebView изображение, например, будет отображаться в WebView. Но я не хочу этого, я хочу, чтобы добавить в качестве вложения, поэтому я отключил перетаскивание внутри WebView:
def webView(sender, dragDestinationActionMaskForDraggingInfo:draggingInfo)
WebDragDestinationActionNone
end
Но теперь мой файл будет добавлен в качестве вложения, если я перетащить он находится в любом месте основного вида, за исключением WebView (в этом случае вызовы draggingEntered: и executeDragOperation:) не вызываются.
Я не знаю, достаточно ли я для ответа на этот вопрос, я все еще новичок в развитии какао, поэтому не стесняйтесь говорить мне, если вам нужно больше деталей. Другое дело, я работаю с Rubymotion, но если у вас есть решение в Objective-C, это тоже будет прекрасно!
Спасибо за любую помощь или предложение.
Решение
Я подклассы в WebView и отменяют метод performDragOperation
, чтобы заставить его работать:
def performDragOperation(sender)
self.UIDelegate.mainView.performDragOperation(sender)
end
Спасибо за ваш ответ. Я не использовал метод draggingDestinationWindow, но смог решить проблему путем подкласса webview и переопределения метода executeDragOperation, которому помог этот другой ответ: http://stackoverflow.com/questions/ 12742276/перетащить и раскрывающийся из-искатель-на-WebView. Но ты поставил меня на правильный путь, чтобы я принял тебя. – siekfried