0

画面全体を占める10個のUITextFieldがあります。それらを変更したい場合、画面の半分にキーパッドが表示されるため、「非表示」フィールドを変更できません。誰かが解決策を知っていましたか?

4

2 に答える 2

1

キーボードが呼び出されたときにフレームを上に移動する必要があります。

- (void)keyboardWillShow:(NSNotification *)aNotification 
{
    self.frame = CGRectMake(0,-[size of keyboard],self.frame.size.width,self.frame.size.height);
}
于 2012-04-22T11:52:55.303 に答える
0

私はここから取った

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    if (textField == textField1) {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationBeginsFromCurrentState:YES];
        textfield1.frame = CGRectMake(textfield1.frame.origin.x, (textfield1.frame.origin.y - 100.0), textfield1.frame.size.width, textfield1.frame.size.height);
        [UIView commitAnimations];
    } else if (textField == textField2) {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationBeginsFromCurrentState:YES];
        textfield2.frame = CGRectMake(textfield2.frame.origin.x, (textfield2.frame.origin.y - 100.0), textfield2.frame.size.width, textfield2.frame.size.height);
        [UIView commitAnimations];
    }
}
- (void)textFieldDidEndEditing:(UITextField *)textField {   
    if (textField == textField1) {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationBeginsFromCurrentState:YES];
        textfield1.frame = CGRectMake(textfield1.frame.origin.x, (textfield1.frame.origin.y + 100.0), textfield1.frame.size.width, textfield1.frame.size.height);
        [UIView commitAnimations];
    } else if (textField == textField2) {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationBeginsFromCurrentState:YES];
        textfield2.frame = CGRectMake(textfield2.frame.origin.x, (textfield2.frame.origin.y + 100.0), textfield2.frame.size.width, textfield2.frame.size.height);
        [UIView commitAnimations];
    }  

そしてタッチで:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{ [テキストフィールド rejectFirstResponder]; }

希望はあなたを助けます。
お力になれて、嬉しいです。

于 2012-04-22T12:22:21.563 に答える