0

6つのテキストフィールドがあり、最初の3つのテキストフィールドを上に移動したくないのですが、残りは必要です.1つのテキストフィールドをクリックしても移動しませんが、2、3などのテキストフィールドをクリックするとビューが表示されます下に移動します。

私が使用したコード:-

- (void) animateTextField: (UITextField*) textField up: (BOOL) up
{

    const int movementDistance = 105; 

    const float movementDuration = 0.3f;

    int movement = (up ? -movementDistance : movementDistance);

    [UIView beginAnimations: @"anim" context: nil];

    [UIView setAnimationBeginsFromCurrentState: YES];

    [UIView setAnimationDuration: movementDuration];

    self.view.frame = CGRectOffset(self.view.frame, 0, movement);

    [UIView commitAnimations];

}


- (void)textFieldDidBeginEditing:(UITextField *)textField
{

if (textField==txtname) {

       toolphone.hidden = YES;
    }

    if (textField==txtcompanyname) {
       toolphone.hidden = YES;
    }
    if (textField==txtemail) {
        toolphone.hidden = YES;

    }

    if (textField ==txtsubject) {
        toolphone.hidden = YES;
    }

    if (textField ==txtphone) {
        [txtphone resignFirstResponder];
        toolphone.hidden = NO;
    }

    if (textField ==txtmessage) {
        toolphone.hidden = YES;
        [self animateTextField: textField up: YES];
    }


}
4

3 に答える 3

1

IOSSwiftの場合

func textFieldDidBeginEditing(textField: UITextField) {
        animateTextField(textField, up: true)
    }
    
func textFieldDidEndEditing(textField: UITextField) {
        animateTextField(textField, up: false)
    }
func animateTextField (textField:UITextField, up:Bool) {
        
        var movementDistance = 80
       
        var movementDuration = 1.0
        var movement = CGFloat(up ? -movementDistance : movementDistance)
        UIView.beginAnimations("anim", context: nil)
        UIView.setAnimationBeginsFromCurrentState(true)
        UIView.setAnimationDuration(movementDuration)
        self.view.frame = CGRectOffset(self.view.frame, 0, movement)
        UIView.commitAnimations()
    }
于 2015-01-06T11:04:54.173 に答える
0

テキストフィールド名を確認して、特定のテキストフィールドでアニメーションを実行できます。

-(void) animateTextField: (UITextField*) textField up: (BOOL) up 
{
    if (textField!=1sttextfieldname||textField!=2ndtextfieldname||textField!=3rdtextfieldname) {
    const int movementDistance = 105;

    const float movementDuration = 0.3f;

    int movement = (up ? -movementDistance : movementDistance);

    [UIView beginAnimations: @"anim" context: nil];

    [UIView setAnimationBeginsFromCurrentState: YES];

    [UIView setAnimationDuration: movementDuration];

    self.view.frame = CGRectOffset(self.view.frame, 0, movement);

    [UIView commitAnimations];
    }
 }
于 2013-02-11T06:33:48.110 に答える
0

これはあなたを助けるかもしれません。

http://www.roostersoftstudios.com/2011/04/19/iphone-uitextfield-dynamically-moving-with-keyboard-tutorial/

http://atastypixel.com/blog/a-drop-in-universal-solution-for-moving-text-fields-out-of-the-way-of-the-keyboard/

彼らはプロジェクトも投稿しています。

于 2013-02-11T07:11:42.677 に答える