プログラムで単語を検索するサービスを提供しようとしています。テキストをアイコンにドラッグすると機能しますが、メニュー項目を使用しようとすると、アプリケーションの別のインスタンスが開き、リクエストを送信したアプリケーションが約30秒間フリーズし、想定されていたメソッドが実行されませんに。
これが私の方法です:
- (void)serviceQuery:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error {
// Test for strings on the pasteboard.
NSArray *classes = [NSArray arrayWithObject:[NSString class]];
NSDictionary *options = [NSDictionary dictionary];
if (![pboard canReadObjectForClasses:classes options:options]) {
*error = NSLocalizedString(@"Error: couldn't encrypt text.",
@"pboard couldn't give string.");
return;
}
NSString *baseURL = @"http://labs.valtyrorn.com/bin/leit.php?q=";
NSString *q = [pboard stringForType:NSPasteboardTypeString];
NSString * encoded = [q stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *query = [NSString stringWithFormat:@"%@%@", baseURL, encoded];
[webView setMainFrameURL:query];
NSLog(query);
}
plist のサービス部分は次のようになります。
<key>NSServices</key>
<array>
<dict>
<key>NSSendTypes</key>
<array>
<string>NSStringPboardType</string>
</array>
<key>NSMessage</key>
<string>serviceQuery</string>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>Fáðu beygingarlýsingu</string>
</dict>
<key>NSPortName</key>
<string>BIN</string>
<key>NSRequiredContext</key>
<dict></dict>
</dict>
</array>
これを修正する方法を知っている人はいますか?