UITextField не отображает клавиатуру при переключении в другое представление - PullRequest
0 голосов
/ 07 января 2012

С начального экрана я переключаюсь на другой контроллер (он имеет UITextField).Как можно отобразить клавиатуру, когда пользователь нажимает на мой UITextField?В демо-проекте все работает нормально, но не работает в моем основном проекте.Это код, который я использую для переключения видов:

-(void) switchView:(UIViewController *)currentCtrl toView:(UIViewController *)nextCtrl
{
@try { 
    UIWindow *theWindow = [[UIApplication sharedApplication]keyWindow]; 
    theWindow.rootViewController = nextCtrl;
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.75f];
    [animation setType:kCATransitionPush];
    if (isBack) {
        [animation setSubtype:kCATransitionFromLeft];
    }
    else [animation setSubtype:kCATransitionFromRight];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
    [[theWindow layer] addAnimation:animation forKey:@"SwitchToView"];
    nextCtrl.view.frame = [[UIScreen mainScreen]applicationFrame];
    // back
    if (isBack == NO) {
        [stackController addObject:currentCtrl];    
    }
    self.currentController = nextCtrl;
    isBack = NO;
}
@catch (NSException *exception) {}

}
-(void) goToPreviousView
{
if (nil != self.currentController && stackController!=nil && [stackController count]>0) 
{
    UIViewController *previousView = [[stackController lastObject]retain];
    [stackController removeLastObject];
    if (previousView) {
        isBack = YES;
        [self switchView:self.currentController toView:previousView];
    }
}

}

Если я использовал как [self presentModalViewController:colorPickerView animated:YES];, то при инициализации представления палитры цветов я пытаюсь:

txtHex.keyboardType = UIKeyboardTypeASCIICapable;
txtHex.returnKeyType = UIReturnKeyDone;
txtHex.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
txtHex.delegate = self;
txtHex.enabled = YES;
[txtHex becomeFirstResponder];

Это работает, но нев совершенстве.Кажется, проблема в том, что текстовое поле не может вызвать метод делегата.

-(void) textFieldDidBeginEditing:(UITextField *)textField
{
txtCurrent = textField;
}
...