2017-01-18 2 views
0

Я разрабатываю чат-приложение. Приложение работает отлично, но у меня есть некоторые проблемы в дизайне пользовательского интерфейса.изменение позиции просмотра при открытии клавиатуры - Цель c

I haver UiTextField в стороне от UIview, когда пользователь хочет ввести сообщение, открывающее клавиатуру, и UIView перемещается вверх.

Затем, когда пользователь нажимает кнопку возврата, я хочу вернуть ее в исходное положение.

Я пытался, но это выглядит так - я хочу, чтобы поддерживать для всех устройств

enter image description here

Вот мой код

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil]; 
    return YES; 
} 


- (BOOL)textFieldShouldEndEditing:(UITextField *)textField { 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil]; 

    [self.view endEditing:YES]; 
    return YES; 
} 


- (void)keyboardDidShow:(NSNotification *)notification 
{ 
    // Assign new frame to your view 
    [self.view setFrame:CGRectMake(0,-145,320,460)]; //here taken -110 for example i.e. your view will be scrolled to -110. change its value according to your requirement. 

} 

-(void)keyboardDidHide:(NSNotification *)notification 
{ 
    [self.view setFrame:CGRectMake(0,0,320,460)]; 
} 




- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self.tv_Message resignFirstResponder]; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(@"selected index : %ld", (long)indexPath.row); 
} 


- (BOOL)textFieldShouldReturn:(UITextField *)aTextField { 
    [aTextField resignFirstResponder]; 
    [self.view setFrame:CGRectMake(0,0,320,460)]; 
    return YES; 
} 

может кто-то поможет мне исправить это. Тпй.

+0

ya. Как я могу сделать его динамичным –

ответ

1

Вы можете использовать эту ссылку для управления своим видом в соответствии с устройством. Также вам необходимо установить ограничения соответственно.

https://stackoverflow.com/a/11282535/6438500

+0

Tnx. Это помогло мне. –

+0

Добро пожаловать, я рад, что это помогло. – Sunny

+0

Этот метод имеет серьезные проблемы, поскольку он подписывает объект на '' 'центр уведомлений'' каждый раз при выборе текстового поля и не показывает, как отказаться от подписки на эти уведомления. Я бы не рекомендовал использовать это вслепую. –

1

Похоже, что вы не установили конечное ограничение вашего основного вида правильно. Затем в методе keyboardDidShow (:) динамически создавайте свое основное представление, потому что ваше представление будет иметь высоту в соответствии с устройством, поэтому заставьте его работать на всех устройствах, вы должны переместить основной вид, вычислив положение текстового поля и высоты клавиатуры, а затем установите рамку вашего взгляда соответственно.