UIApplication sharedApplication - keyWindow - это ноль?

Я хочу преобразовать CGPoint из моего UIView в координаты UIWindow и понял, что UIApplication keyWindow всегда равен nil; почему это?

Я попробовалconvertPoint:toView: метод из UIView.

Пожалуйста, посмотрите этот пример кода, который я пробовал в контроллере представления в шаблоне Xcode (Просмотр приложения):

- (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");
}

и я получаю:

p:{100, 100} np:{100, 100}
p:{100, 100} np:{140, 160}
p:{100, 100} np:{100, 100}
window was nil

Я могу преобразовать это, но только когда я получаю доступ к окну через делегат приложения. И не UIApplication. Согласно документации, keyWindow здесь должно работать, но это ноль. Почему это?

Ответы на вопрос(4)

Ваш ответ на вопрос