У меня есть что-то еще, если хотите. Дело в том, что вы хотите установить центр вашего UIView на текстовое поле, которое вы редактируете.
Перед этим вы должны сохранить INITIAL_CENTER как CGPoint , из self.view.center и ваш INITIAL_VIEW как CGRect из self.view.frame в свойстве const.
Вы можете создать метод, подобный этому:
- (void) centerOn: (CGRect) fieldFrame {
// Set up the center by taking the original view center
CGPoint center = CGPointMake(INITIAL_CENTER.x,
INITIAL_CENTER.y - ((fieldFrame.origin.y + fieldFrame.size.height/2) - INITIAL_CENTER.y));
[UIView beginAnimations:@"centerViewOnField" context:nil];
[UIView setAnimationDuration:0.50];
if (CGRectEqualToRect(fieldFrame,INITIAL_VIEW)) {
self.view.frame = INITIAL_VIEW;
[self.view setCenter:INITIAL_CENTER];
} else {
[self.view setCenter:center];
}
[UIView commitAnimations];
}
Затем на UITextFieldDelegate необходимо вызвать centerOn: (CGRect) следующими способами:
textFieldDidBeginEditing: (UITextField *) с, в качестве параметра, рамкой текстового поля, на котором вы хотите центрироваться.
И вы должны вызвать его в обработчике событий, где вы закрываете клавиатуру,
textFieldDidEndEditing: (UITextField *) может быть одним из способов сделать это, поместив INITIAL_VIEW в качестве параметра centerOn: (CGRect) .