[Ios] Wie man den View-Controller zum Textfeld scrollen lässt, wenn die Tastatur erscheint



Answers

Alle vorherigen Antworten sind großartig, aber wenn Sie sich nicht mit Code verwirren möchten, verwenden Sie ein Steuerelement.

Eine, die ich liebe, ist: https://github.com/michaeltyson/TPKeyboardAvoiding (Cocoapods: pod 'TPKeyboardAvoiding')

Alles, was Sie tun müssen, ist, Ihre Textfelder in eine UIScrollView einzubetten (Editor / Einbetten in. Wählen Sie zuerst Ihre UITextFields) und dann diese UIScrollView-Klasse auf TPKeyboardAvoidingScrollView.

Ja, Sie sollten zuerst lernen, wie man es manuell macht, aber nach dem Gebrauch, wenn Sie möchten.

Question

Ich möchte meine uiviewcontroller.xib scrollen lassen. Mein View-Controller hat 8 Textfelder. Also mein Problem ist, wenn ich etwas im 5. textfield schreiben will und so auf meiner Tastatur die Textfelder abdeckt. Wie kann ich dieses Problem loswerden und meinen Viewcontroller scrollen lassen?

Bitte führen Sie im Detail, denn ich bin neu in iPhone Entwicklung.

Danke im Voraus.




Das ist wie man es macht:

@implementation mainViewController{
    CGPoint textFieldPoint;
    UITextField *curentlyBeingEditingTextField;
}


  - (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    _myTextField.delegate=self;

     textFieldPoint=CGPointMake(160, 228);

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillShow:)
                                                 name:UIKeyboardWillShowNotification object:nil];

}


- (void)keyboardWillShow:(NSNotification*)aNotification
{
    NSDictionary* info = [aNotification userInfo];
   double delay = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
   CGRect kbFrame=[[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];

    [UIView animateWithDuration:0.4f
                              delay:delay-0.2
                            options:UIViewAnimationOptionCurveEaseOut
                         animations:^{
                             curentlyBeingEditingTextField.center=CGPointMake(curentlyBeingEditingTextField.center.x,kbFrame.origin.y- kbFrame.size.height-curentlyBeingEditingTextField.frame.size.height);
                         }completion:nil];


}


-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    [curentlyBeingEditingTextField resignFirstResponder];
    [UIView animateWithDuration:0.4f
                          delay:0.0
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^{
                         curentlyBeingEditingTextField.center=textFieldPoint;
                     }completion:nil];
}

#pragma mark TextFieldDelegate
- (void)textFieldDidBeginEditing:(UITextField *)textField{
    curentlyBeingEditingTextField=textField;
}



Links