2010-04-22 2 views
0

J'ai un UIView avec un autre UIView à l'intérieur. A l'intérieur UIView il y a une zone de texte que je veux remplir Lorsque je tente de le remplir dans les blocs de clavier moi.Clavier bloquant ma vue

Le UIViewController a les suivantes

containerView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
self.view=containerView; 
//The apropriate releases etc are further on... 

Quand je touche, la le clavier arrive comme prévu, mais bloque la zone de texte que j'essaie de remplir. Comment puis-je forcer la vue à glisser vers le haut?

La vue de face

OptionsFront * fv = [[OptionsFront alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
[containerView addSubview:frontView]; 

Dans la vue de face est une sous-vue

CGRect bounds = CGRectMake(0.0f, 210.0f, 280.0f, 130.0f); 
sv = [[UIView alloc] initWithFrame:bounds]; 
[self addSubview:sv]; //added to frontView 

En sv est une zone de texte près du Botton:

rect = CGRectMake(70.0f, 20.0f, 100.0f, 27.0f); 
cf = [self createTextField_Rounded:rect holder:@"+ve"]; 
[sv addSubview:cf]; 

Alors cf se trouve être près le bas de la page. Je m'attendais à ce que lorsque je le sélectionne, tout l'écran monte, mais le clavier monte et le bloque.

Que puis-je faire?

Annexe:

- (UITextField *)createTextField_Rounded:(CGRect) frame holder:(NSString *) ph 
{ 
UITextField *returnTextField = [[UITextField alloc] initWithFrame:frame]; 
returnTextField.borderStyle = UITextBorderStyleRoundedRect; 
    returnTextField.textColor = [UIColor blackColor]; 
returnTextField.font = [UIFont systemFontOfSize:17.0]; 
returnTextField.delegate = self; 
returnTextField.keyboardType = UIKeyboardTypeNumbersAndPunctuation; 
returnTextField.returnKeyType = UIReturnKeyDone; 

returnTextField.clearButtonMode = UITextFieldViewModeWhileEditing; 

return returnTextField; 
} 

Répondre

3

vous devez déplacer le textField vers le haut. dans votre délégué UITextField mettre en œuvre quelque chose comme (de mémoire):

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    textField.superview.frame = CGRectMake(0.0f, 100.0f, 280.0f, 130.0f); // experiment with frame size 
    [UIView commitAnimations]; 
} 

et vous aurez envie de le déplacer en arrière dans textFieldDidEndEditing:

+0

Merci! Solution très élégante! –