Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 禁用WebView的拖放功能,以支持其中一个超级视图_Objective C_Macos_Cocoa_Drag And Drop_Rubymotion - Fatal编程技术网

Objective c 禁用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中。但我不希望这样,我希望它作为附件添加,这就是为什么我

我正在开发一个类似Mac Mail的应用程序。我有一个允许用户编写新消息的WebView。我实现了拖放功能,因此用户可以通过这种方式向消息添加附件

为了简单起见,我有一个主视图,其中包含一个WebView和其他视图。我在这个主视图上实现了拖放功能(使用draggingEntered:和performdraguoperation:方法),它可以按预期工作

问题是,默认情况下,在WebView中拖动文件(例如图像)时,图像将显示在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