С начального экрана я переключаюсь на другой контроллер (он имеет 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;
}