【问题标题】:How to implment drag and drop feature on Rubymotion for a OSX app如何在 Rubymotion 上为 OSX 应用程序实现拖放功能
【发布时间】:2015-01-06 08:42:45
【问题描述】:

试图制作一些快速而肮脏的东西,可以大量重命名和转换文件,并拥有一个 ruby​​motion 许可证,我想为什么不使用它来制作一个可以拖放的简单应用程序,而不是一些批处理文件。

但是我在检测拖动事件时遇到了问题,似乎无法在 ruby​​motion 中找到有关如何执行此操作的信息,我只使用 ruby​​motion 做 iOS 应用程序,发现自己迷路了。

任何帮助将不胜感激。

【问题讨论】:

标签: macos drag-and-drop rubymotion


【解决方案1】:

您是否开始学习任何 Cocoa 教程?用 Objective-C 编写的任何东西都可以轻松移植。我将从这里开始:Drag and Drop Programming (developer.apple.com)

如果你想支持拖到停靠图标上,你需要修改项目支持的文档类型,我不知道怎么做(检查rake config,它可能会提供线索)。你最终也需要实现这个方法:

def application(sender, openFile: path)
  # sender is an NSApplication, path is NSString
  true  # or false
end

【讨论】:

  • 我忘记了app.info_plist 可用,所以您应该可以在那里添加文档类型。 XML 键是 CFBundleDocumentTypesCFBundleTypeExtensions,例如app.info_plist['CFBundleDocumentTypes'] = [{'CFBundleTypeExtensions'=>['txt'],'CFBundleTypeRole'=>'Editor'}]
  • 我从这里得到了这些密钥:qt-project.org/doc/note_revisions/351/659/view
  • 感谢您的建议!仍然难以将 obj-c 转换为 ruby​​,我知道能够做到这一点应该是高优先级的,因为 OSX 和 iOS 的大部分信息都在 Obj-C 中。
【解决方案2】:

你需要添加类似的东西:

app.info_plist['CFBundleDocumentTypes'] = [
  {'CFBundleTypeRole': 'Viewer', 'CFBundleTypeExtensions': ['mp4','m4v','avi','*'] } ,
  {'CFBundleTypeRole': 'Editor', 'CFBundleTypeExtensions': ['txt'] }
]

Rakefile中的设置块

并在app_delegate.rb中的AppDelegate类中添加如下方法

def application(sender, openFile: path)
  true
end

在你做rake build之前先做一个rake clean,你应该很高兴。

注意application 方法会为您拖放到应用程序图标上的每个文件调用。 path 包含删除文件路径的字符串。

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多