2013-06-20 1 views
4

Я работаю над приложением, отличным от 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 

ответ

1

Вы можете проверить sender (который реализует протокол NSDraggingInfo) для целевого окна:

http://developer.apple.com/library/Mac/#documentation/Cocoa/Reference/ApplicationKit/Protocols/NSDraggingInfo_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/NSDraggingInfo/draggingDestinationWindow

Это просто догадка, но вы должны уметь найти решение здесь.

+0

Спасибо за ваш ответ. Я не использовал метод draggingDestinationWindow, но смог решить проблему путем подкласса webview и переопределения метода executeDragOperation, которому помог этот другой ответ: http://stackoverflow.com/questions/ 12742276/перетащить и раскрывающийся из-искатель-на-WebView. Но ты поставил меня на правильный путь, чтобы я принял тебя. – siekfried

 Смежные вопросы

  • Нет связанных вопросов^_^