键盘打开时更改视图的位置 - 目标c

时间:2017-01-18 06:03:43

标签: ios objective-c uiview

我正在开发一个聊天应用程序。该应用程序工作正常,但我在UI设计中遇到了一些问题。

我在UIview旁边有UiTextField,当用户想要键入键盘打开的消息时,UIView会向上移动。

然后当用户按下返回按钮时,我想将其恢复到原始位置。

我试过但看起来像这样我希望它支持所有设备。

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;
}

有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

您似乎没有正确设置主视图的尾随约束。然后在keyboardDidShow(:)方法中动态显示主视图,因为您的视图将根据设备具有高度,因此在所有设备上都可以通过计算文本字段和键盘高度的位置来移动主视图,然后设置框架你的观点相应的。

答案 1 :(得分:1)

您可以使用此链接根据设备管理您的视图。您还需要相应地设置约束。

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