Objective c 禁用WebView的拖放功能,以支持其中一个超级视图
我正在开发一个类似Mac Mail的应用程序。我有一个允许用户编写新消息的WebView。我实现了拖放功能,因此用户可以通过这种方式向消息添加附件 为了简单起见,我有一个主视图,其中包含一个WebView和其他视图。我在这个主视图上实现了拖放功能(使用draggingEntered:和performdraguoperation:方法),它可以按预期工作 问题是,默认情况下,在WebView中拖动文件(例如图像)时,图像将显示在WebView中。但我不希望这样,我希望它作为附件添加,这就是为什么我禁用了WebView中的拖放功能:Objective c 禁用WebView的拖放功能,以支持其中一个超级视图,objective-c,macos,cocoa,drag-and-drop,rubymotion,Objective C,Macos,Cocoa,Drag And Drop,Rubymotion,我正在开发一个类似Mac Mail的应用程序。我有一个允许用户编写新消息的WebView。我实现了拖放功能,因此用户可以通过这种方式向消息添加附件 为了简单起见,我有一个主视图,其中包含一个WebView和其他视图。我在这个主视图上实现了拖放功能(使用draggingEntered:和performdraguoperation:方法),它可以按预期工作 问题是,默认情况下,在WebView中拖动文件(例如图像)时,图像将显示在WebView中。但我不希望这样,我希望它作为附件添加,这就是为什么我
def webView(发件人,DragDestinationMaskForDraggingInfo:DragginInfo)
WebDragDestinationNone
结束
但是现在,如果我将文件拖动到主视图中的任何位置,除了WebView中,我的文件将作为附件添加(在本例中不调用draggingEntered:和performdraguoperation:方法)
我不知道我的问题是否清楚到可以找到答案,我还是可可开发的新手,所以如果你需要更多的细节,请告诉我。另一件事,我正在使用Rubymotion,但如果你在Objective-C中找到了一个解决方案,那也将是完美的
谢谢你的帮助和建议
解决方案
我对WebView进行了子类化,并对performDragOperation
方法进行了重写以使其正常工作:
def performDragOperation(sender)
self.UIDelegate.mainView.performDragOperation(sender)
end
您可以检查目标窗口的
发送方
(它实现了NSDraggingInfo
协议):
这只是一个猜测,但您应该能够从这里找到解决方案。感谢您的回答,我没有使用draggingDestinationWindow方法,但通过对webview进行子类化并覆盖performDragOperation方法解决了问题,另一个答案提供了帮助:。但你让我走上了正确的道路,所以我会接受你的回答。
def performDragOperation(sender)
if sender.draggingDestinationWindow == @web_view
# Attach file
else
# Let it do the normal drag operation
end
true
end