2016-08-25 2 views
0

Я пытаюсь использовать этот кодView не перемещается вверх, когда клавиатура присутствует IOS

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    NSLog(@"%f",self.view.frame.origin.y); 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.25f]; 
    CGRect frame = self.view.frame; 
    frame.origin.y =frame.origin.y -204; 
    [self.view setFrame:frame]; 
    [UIView commitAnimations]; 
} 


- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.25f]; 
    CGRect frame = self.view.frame; 
    frame.origin.y = frame.origin.y + 204; 
    [self.view setFrame:frame]; 
    [UIView commitAnimations]; 
} 

Для перемещения просмотра, когда клавиатура присутствует, но это приводит к следующим образом: enter image description here

становится этим :

enter image description here

не может понять, почему, и если у него есть что-то делать с навигацией или ограничениями.

+0

Я не буду испортить self.view, скорее я создам новый вид со всеми этими текстовыми полями и изменим его фрейм. –

+0

И переместите его, чтобы покрыть Navbar? Попробуем это –

+0

Мое предложение - использовать tableView, поскольку он эффективно обрабатывает это поведение. Вы можете использовать несколько ячеек, или вы можете использовать одну ячейку с представлением, содержащим все эти элементы. –

ответ

0

Почему бы не использовать эту красивую библиотеку по имени IQKeyboardManager. Просто добавьте его через стручки/вручную и дайте ему сделать свою работу.

0

Вид, который сказал Алексей Соболевский, сделал трюк. В основном мне нужно было поместить их в scrollview и добавить ограничение от представления прокрутки к объекту ниже, а затем поместить все виды, содержащие текстовые поля внутри этого scrollview. Это заставило все работать правильно.

0

Сначала добавьте прокрутку. Затем напишите следующий код.

//When return key press then bring the view back 
-(BOOL)textFieldShouldReturn:(UITextField *)textField{ 
    [textField resignFirstResponder]; 
    self.scrlView.contentOffset = CGPointMake(0, 0); 
    return YES; 
} 

//When the text field begin editing then moves the view up 
-(void)textFieldDidBeginEditing:(UITextField *)textField{ 
    self.scrlView.contentOffset = CGPointMake(0, 30); 
} 

//When ext field end editing then bring the view back 
-(void)textFieldDidEndEditing:(UITextField *)textField{ 

    self.scrlView.contentOffset = CGPointMake(0, 0); 
} 
+0

Спасибо за вашу любезную информацию. Пожалуйста, нажмите стрелку вверх, если она вам поможет. – Sanjukta