Nuova versione, del 5/12/2012:
[code lang=”java” autolinks=”false” collapse=”false” firstline=”1″ gutter=”true” htmlscript=”false” light=”false” padlinenumbers=”false” smarttabs=”true” tabsize=”4″ toolbar=”false”]- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
[self moveView:0];
return YES;
}
– (void) textFieldDidBeginEditing:(UITextField *)textField {
[self moveView:-100];
}
– (void) moveView:(int)y {
[UIView animateWithDuration:0.25 animations:^{
CGRect rect = self.view.frame;
rect.origin.y = y;
self.view.frame = rect;
}];
}[/code]
Può capitare di avere un textfield in basso nella view…
Come ben sapete, la tastiera che appare, copre mezzo schermo, e questo può essere noioso.
Lo si capisce meglio dall’esempio in foto:
Ecco qui, un trick per evitare questo problemino…
[code lang=”java” autolinks=”false” collapse=”false” firstline=”1″ gutter=”true” htmlscript=”false” light=”false” padlinenumbers=”false” smarttabs=”true” tabsize=”4″ toolbar=”false”]int verticalOffset;
#pragma mark TEXTFIELD_TRICKS
– (BOOL) textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
if (verticalOffset != 0) {
[self moveView: -verticalOffset + 200];
verticalOffset = 0;
}
return YES;
}
– (void) textFieldDidBeginEditing:(UITextField *)textField {
int wantedOffset = textField.frame.origin.y – 200;
if ( wantedOffset < 0 ) {
wantedOffset = 0;
}
if ( wantedOffset != verticalOffset ) {
[self moveView: wantedOffset – verticalOffset];
verticalOffset = wantedOffset;
}
}
– (void) moveView:(int)offset {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect rect = self.view.frame;
rect.origin.y -= offset;
rect.size.height += offset;
VIEW_TO_MOVE.frame = rect;
[UIView commitAnimations];
}[/code]
Adesso la vostra view si sposterà in alto, per poi ritornare a casa!
Ovviamente offset e impostazioni sono personalizzabilissime.