Scrollen Sie in ein bestimmtes Textfeld in einem ScrollView/ScrollView -STOP -SCROLL, wenn sich die Tastatur auf dem Bildschirm befindet

StackOverflow https://stackoverflow.com/questions/1987943

  •  22-09-2019
  •  | 
  •  

Frage

Ich bin hier stecken geblieben,

Ich habe eine benutzerdefinierte ScrollView in einer Ansicht. Diese Scroll -Ansicht verfügt über eine Schaltfläche "Hinzufügen", mit dem Benutzer dem ScrollView neues Textfeld hinzufügen können. Wenn der Benutzer auf eine bestimmte Textfeld -Tastatur angezeigt wird und das Textfeld ausgeblendet wird, verfolgt ich, um dies zu überwinden

Um dies zu verhindern, folgte ich ein Uicatalog -Beispiel und tat dies

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

if (sender.frame.origin.y>109) {
    moveScrollViewUpBy=(sender.frame.origin.y-109+10);

    [self viewMovedUp:YES];
}
}


-(void)viewMovedUp:(BOOL)movedUp
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];

CGRect rect = formScrollView.frame;
if (movedUp)
{
    if(rect.origin.y == 0.0f){
        rect.origin.y -= kOFFSET_FOR_KEYBOARD;
        rect.size.height += kOFFSET_FOR_KEYBOARD;
    }
}
else
{
    if(rect.origin.y != 0.0f){
        rect.origin.y += kOFFSET_FOR_KEYBOARD;
        rect.size.height -= kOFFSET_FOR_KEYBOARD;
    }
}
self.formScrollView = rect;


[UIView commitAnimations];
}

hier

#define kOFFSET_FOR_KEYBOARD    160.0

Dies verschiebt jedoch die Bildlaufansicht,

Ich möchte das, wenn ich auf ein Textfeld unten in Scroll -Ansicht tippe ... Scrollenansicht Scrolls und dieses Textfeld erscheint ....

Ist es möglich?

Ich habe noch eine Abfrage srollView. Hören Sie einfach auf zu scrollen, während die Tastatur auf dem Bildschirm bleibt. Gibt es eine Möglichkeit, dies zu überwinden?

War es hilfreich?

Lösung

Sie möchten wahrscheinlich nur die ContentOffset -Eigenschaft des ScrollView festlegen, anstatt ihre Grenzen anzupassen.

Andere Tipps

Implementieren Sie das UitextViewDelegate und machen Sie Folgendes: Folgendes:

- (void)textViewDidBeginEditing:(UITextView *)textView {

    keyboardShowing = YES; //helper ivar
    [self sizeToOrientation];
    [self.scrollView scrollRectToVisible:textView.frame animated:YES];
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
    keyboardShowing = NO;
    [self sizeToOrientation];
}

Helfermethode:

//fit to the appropriate view sizes
- (void)sizeToOrientation {
    CGSize size;
    if( keyboardShowing )
        size = CGSizeMake(320, 190); //make room for keyboard
    else
        size = CGSizeMake(320, 420); //full height with tabbar on bottom

    self.scrollView.frame = CGRectMake(0, 0, size.width, size.height);
}

Das funktioniert gut für mich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top