gpt4 book ai didi

macos - OSX 将文本(不是文件)拖放到应用程序停靠图标

转载 作者:行者123 更新时间:2023-12-03 17:11:09 25 4
gpt4 key购买 nike

我想在用户将文本(不是包含文本的文件)拖放到我的应用程序的停靠图标时进行处理。我该怎么做?

最佳答案

接受拖放到 Dock 图标上的文本的最简单方法是实现接受文本的服务。

在您的 Info.plist 中:

<dict>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>Search in HoudahSpot</string>
</dict>
<key>NSMessage</key>
<string>search</string>
<key>NSPortName</key>
<string>HoudahSpot</string>
<key>NSRequiredContext</key>
<dict>
<key>NSServiceCategory</key>
<string>public.text</string>
</dict>
<key>NSSendTypes</key>
<array>
<string>NSStringPboardType</string>
</array>
<key>Service description</key>
<string>Starts a HoudahSpot search for the selected text</string>
</dict>

在您的应用程序委托(delegate)中:

- (void)awakeFromNib
{
[NSApp setServicesProvider:self];
}

- (void)search:(NSPasteboard *)pboard userData:(NSString *)data error:(NSString **)error
{
NSArray *types = [pboard types];

if ([types containsObject:NSStringPboardType]) {
NSString *searchString = [pboard stringForType:NSStringPboardType];

NSLog(@"%@", searchString);
}
}

您还可以通过在 -applicationWillFinishLaunching 中注册来捕获该事件:

NSAppleEventManager     *appleEventManager  = [NSAppleEventManager sharedAppleEventManager];

[appleEventManager setEventHandler:self
andSelector:@selector(handleOpenContentsEvent:withReplyEvent:)
forEventClass:kCoreEventClass
andEventID:kAEOpenContents];

并处理它:

- (void)handleOpenContentsEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
NSString *string = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];

NSLog(@"%@", string);
}

您仍然需要在 Info.plist 中声明一项服务才能接受 drop。

关于macos - OSX 将文本(不是文件)拖放到应用程序停靠图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27420016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com