0

メイン メニューの xib ファイルに text という文字列があり、コピー メニュー項目をオブザーバーを介して呼び出されるアクションにリンクしました。このメソッドが実際に呼び出されることをブレークポイントで確認しましたが、問題は文字列が実際にはそうではないことです。ペーストボードにコピー:

- (void) copy: (NSNotification*) notification
{
    if([[self window]isKeyWindow])
    {
        // It always enters in this block
        NSPasteboard* pb=[NSPasteboard generalPasteboard];
        NSPasteboardItem* item=[[NSPasteboardItem alloc]init];
        [pb clearContents];
        [item setData: [NSKeyedArchiver archivedDataWithRootObject: text] forType: NSPasteboardTypeString];
        [pb writeObjects: [NSArray arrayWithObject: item]];
    }
}

ブロックに入った後、ペーストボードのすべてのコンテンツをクリアします。しかし、コピーしたコンテンツをテキスト編集に貼り付けようとすると、何も貼り付けられません (空の文字列) が、文字列の長さはゼロではありません。
また、writeObjects の戻り値を確認しようとしましたが、YES が返されます。

4

1 に答える 1

2

以下を簡単に使用できます。

[pb setString:text forType:NSPasteboardTypeString];

setString:forTypeあるいは、おそらくonを使用したいと思うでしょうNSPasteboardItem

于 2012-09-22T21:23:05.950 に答える