2015-01-29 5 views
9

Esiste un modo per simulare l'acquisizione di una schermata sul simulatore iOS (equivalente a casa + accensione sul dispositivo)? Il mio obiettivo NON è quello di salvare (cmd + s) o copiare una ripresa dello schermo (dalle voci del menu del simulatore) ma di catturare l'evento UIApplicationUserDidTakeScreenshotNotification.Come simulare l'acquisizione di uno screenshot nel simulatore iOS?

+0

si potrebbe descrivere più su di esso. cosa hai provato! – nisar

+0

Aggiornamento della risposta. Ho già provato a salvare la schermata o a copiare il ghetto dal menu del simulatore ma nessuno di questi ha attivato il gestore per UIApplucationUserDidTakeScreenshotNotification. –

+0

puoi fare riferimento a questo link [collegamento] (http://stackoverflow.com/questions/13484516/ios-detection-of-screenshot) – nisar

risposta

0

Anche io non riesco a rilevare UIApplicationUserDidTakeScreenshotNotification, ma perché non si utilizza questo codice per scattare schermate e rilevarle utilizzando le condizioni.

// // TAKE SCREENSHOT 
CGRect myRect = [self.view bounds]; 
UIGraphicsBeginImageContext(myRect.size); 
CGContextRef ctx = UIGraphicsGetCurrentContext(); 
[[UIColor blackColor] set]; 
CGContextFillRect(ctx, myRect); 
[self.view.layer renderInContext:ctx]; 
UIImage *viewimage = UIGraphicsGetImageFromCurrentImageContext(); 
NSData *imageData = UIImageJPEGRepresentation(viewimage, 1.0); 
if(imageData!=NULL) 
{ 
    NSLog(@"user saved the image"); 
//Here you can detect the screen shots 
    [self.imagevieww setImage:[UIImage imageWithData:imageData]]; 
} 
else 
{ 
    NSLog(@"user dont want to save image"); 
} 
UIGraphicsEndImageContext(); 
4

No, questo non è attualmente possibile in iOS Simulator.

+1

È possibile se si allega un debugger. Vedi la mia risposta. –

1

Usa LLDB per imitare il NSNotification screenshot:

(lldb) expr [[NSNotificationCenter defaultCenter] postNotificationName:(NSNotificationName)UIApplicationUserDidTakeScreenshotNotification object:nil] 

Passo --ignore-breakpoints false -- al comando expr se si vuole fermare ad un punto di interruzione troppo:

(lldb) expr --ignore-breakpoints false -- [[NSNotificationCenter defaultCenter] postNotificationName:(NSNotificationName)UIApplicationUserDidTakeScreenshotNotification object:nil]