2012-08-04 2 views
8

Я хотел бы получить текст, скопированный в буфер обмена при запуске приложения.iOS SDK получение текста буфера обмена при загрузке приложения

Я могу использовать следующий текст, чтобы получить доступный текст из буфера обмена. Но мне нужно использовать это значение в другом диспетчере представлений. Как передать это значение моему диспетчеру просмотра?

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

    NSLog([UIPasteboard generalPasteboard].string); 

} 
+2

Почему бы просто не вызвать '[UIPasteboard generalPasteboard] .string' в вашем контроллере вида? –

+0

viewController не поддерживает applicationDidBecomeActive event. Я хочу получать содержимое буфера обмена, когда приложение становится активным с фона. – sleepwalkerfx

ответ

9

Declare и реализовать метод на вашем VC, который вы вызываете из приложения делегата от становится активным:

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

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

@end 

в делегат своего приложения:

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

hmm Я пробовал это, но он дает мне ошибку: AppDelegate.m: 65: 12: Property 'ViewController' не найден на объекте типа 'AppDelegate *' ... Мое главное представление называется ViewController, чего не хватает? Должен ли я добавить некоторых делегатов в свой диспетчер представлений? – Fredv

+5

@Fredv О, давай ... –

10

Гораздо лучший способ обработка этого будет заключаться в том, чтобы добавить наблюдателя (в контроллер представления) для события UIApplicationDidBecomeActiveNotification. Таким образом, вы избегаете ненужной связи между делегатом приложения и контроллером представления.

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

Edit: Не забыл удалить наблюдателя, когда контроллер представления удаляется:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
0

Не уверен, что если вы хотите деталь с буфером обмена, но если это когда что конкретный контроллер представления показан или о котором будет показано, вы можете сделать это в viewDidLoad для этого контроллера вида

Смежные вопросы