UIApplication sharedApplication - keyWindow is nil?
Ich möchte einen CGPoint von meinen UIView-Koordinaten in UIWindow-Koordinaten konvertieren und habe festgestellt, dass UIApplication keyWindow immer null ist. warum ist das
Ich habe das @ ausprobieconvertPoint:toView:
-Methode aus UIView.
Bitte sehen Sie diesen Beispielcode, den ich im View-Controller in einer Vorlage von Xcode (View-Anwendung) ausprobiert habe:
- (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");
}
und ich bekomme:
p:{100, 100} np:{100, 100}
p:{100, 100} np:{140, 160}
p:{100, 100} np:{100, 100}
window was nil
Ich kann es konvertieren, aber nur, wenn ich über den App-Delegaten auf das Fenster zugreife. Und nicht UIApplication. Laut Dokumentation sollte keyWindow hier funktionieren, ist aber gleich Null. Warum ist das