2013-06-20 54 views
4

我正在開發像Mac Mail一樣的應用程序。我有一個WebView,允許用戶寫一條新消息。我實現了拖放功能,以便用戶可以以這種方式向消息中添加附件。禁用WebView的拖放操作以支持其某個超級瀏覽

爲了簡單起見,我有一個包含WebView和其他視圖的主視圖。我在這個主視圖上實現了拖放操作(使用draggingEntered和performDragOperation:方法),並且按預期工作。

問題是,默認情況下,當在WebView中拖動文件時,例如圖像時,圖像將顯示在WebView中。但我不希望這樣,我希望它被作爲附件添加,這就是爲什麼我禁用了的WebView內拖放:

def webView(sender, dragDestinationActionMaskForDraggingInfo:draggingInfo) 
    WebDragDestinationActionNone 
    end 

但現在,如果我拖我的文件將作爲附件添加它在主視圖內的任何地方,除了在WebView中(draggingEntered:和performDragOperation:方法在這種情況下不會被調用)。

我不知道我的問題是否足夠清楚地找到答案,我在Cocoa開發中仍然是新手,所以如果您需要更多的細節,請不要猶豫,告訴我。另一件事,我正在使用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並覆蓋performDragOperation方法來解決問題,並得到了其他答案的幫助:http://stackoverflow.com/questions/ 12742276 /拖和滴從取景器對網頁視圖。但是你讓我走對了,所以我會接受你的回答。 – siekfried