Je veux convertir un CGPoint de mes coordonnées UIView en UIWindow et j'ai réalisé que UIApplication keyWindow est toujours nul; Pourquoi est-ce?UIApplication sharedApplication - keyWindow est nul?
J'ai essayé la méthode convertPoint:toView:
de UIView.
S'il vous plaît voir cet exemple de code que j'ai essayé dans le contrôleur de vue dans un modèle de Xcode (Voir l'application):
- (void)viewDidLoad {
[super viewDidLoad];
UIView *test = [[UIView alloc] initWithFrame:CGRectMake(40,40,250,250)];
[test setBackgroundColor:[UIColor redColor]];
[self.view addSubview:test];
CGPoint p = CGPointMake(100, 100);
CGPoint np;
np = [test convertPoint:p toView:[[UIApplication sharedApplication] keyWindow]];
NSLog(@"p:%@ np:%@", NSStringFromCGPoint(p), NSStringFromCGPoint(np));
AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate;
np = [test convertPoint:p toView:[appDel window]];
NSLog(@"p:%@ np:%@", NSStringFromCGPoint(p), NSStringFromCGPoint(np));
np = [test convertPoint:p toView:nil];
NSLog(@"p:%@ np:%@", NSStringFromCGPoint(p), NSStringFromCGPoint(np));
[test release];
if(![[UIApplication sharedApplication] keyWindow])
NSLog(@"window was nil");
}
et je reçois:
p:{100, 100} np:{100, 100}
p:{100, 100} np:{140, 160}
p:{100, 100} np:{100, 100}
window was nil
Je peux le convertir mais seulement quand J'accède à la fenêtre via le délégué de l'application. Et pas UIApplication. Selon la documentation, keyWindow devrait fonctionner ici, mais est nul. Pourquoi est-ce?
Cela fonctionnera-t-il encore si votre application a plusieurs fenêtres? Comme, qu'en est-il dans une application basée sur un document? –
Vous voulez dire [UIApplication sharedApplication] .keyWindow – Laszlo
@Laszlo Ce n'est pas la même chose. On obtient sa fenêtre du délégué de l'application, une de n'importe quelle fenêtre pourrait être sur le dessus en ce moment. – iwasrobbed