2012-08-04 9 views
8

上のテキストをクリップボード取得します。のiOS SDKは、私はときにアプリケーションの起動をクリップボードにコピーしたテキストを取得したいと思いアプリケーションの負荷

私は、クリップボードから入手できるテキストを取得するには、次のテキストを使用することができます。しかし、私は別のviewcontrollerでこの値を使用する必要があります。どのように私のビューコントローラにこの値を渡すことができますか?

- (void)applicationDidBecomeActive:(UIApplication *)application { 

    NSLog([UIPasteboard generalPasteboard].string); 

} 
+2

ためviewDidLoadでそれを行うことができますなぜちょうどあなたのビューコントローラで '[UIPasteboard generalPasteboard] .string'呼び出しませんか? –

+0

viewControllerはapplicationDidBecomeActiveイベントをサポートしていません。私はアプリケーションがバックグラウンドからアクティブになるときにクリップボードの内容を取得したい。 – sleepwalkerfx

答えて

9

宣言し、あなたがアクティブになる時にアプリのデリゲートから呼び出すあなたのVCのメソッドを実装:アプリのデリゲートで

@inferface ViewController: UIViewController { 
    /* etc. */ 
} 

- (void)handlePasteboardString:(NSString *)s; 

@end 

:の

- (void)applicationDidBecomeActive:(UIApplication *)a 
{ 
    [self.mainViewController handlePasteboardString:[UIPasteboard generalPasteboard].string]; 
} 
+0

うーん私はそれを試してみましたが、それは私にエラーを与える:AppDelegate.mを:65:12:プロパティ「のViewController」何が欠落している、私の主なビューがViewControllerを呼ばれて...「AppDelegate *」型のオブジェクトに見つかりませんか?私はviewcontrollerにいくつかの代理人を追加する必要がありますか? – Fredv

+5

@Fredvあああ... –

10

もっと良い方法をこれを処理するUIApplicationDidBecomeActiveNotificationイベントの(ビューコントローラ内)オブザーバを追加することであろう。そうすれば、アプリケーションデリゲートとビューコントローラ間の不必要な結合を避けることができます。

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(getClipboardString:) 
              name:UIApplicationDidBecomeActiveNotification object:nil]; 

編集:ビューコントローラが削除されたときにオブザーバを削除するのを忘れないでください:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
0

わからないクリップボードアイテムをしたいときには、それはだ場合、その特定のビューコントローラが示されている場合や、示されようと、あなたはそのビューコントローラ

関連する問題