gpt4 book ai didi

iphone - 键盘显示后 TableView 内容高度已更改

转载 作者:行者123 更新时间:2023-11-28 17:37:45 25 4
gpt4 key购买 nike

我在底部有一个 ScrollView 、表格 View 和文本字段,它们会在单击后触发键盘显示。 TableView 只是 ScrollView 中的一个 subview ,用于显示该照片的一些评论。

一开始,tableView的高度显示正确。但是,单击类中的任何 textField 后,tableView 的高度发生了变化。任何人都有解决方案。

我已经测试了键盘高度。它会影响 UITableView 的附加高度。但是我对如何保持键盘显示前的高度没有任何想法。

请帮忙。

这里是一些代码,

//---when a TextField view begins editing---
-(BOOL) textFieldDidBeginEditing:(UITextField *)textFieldView {
currentTextField = textFieldView;

return YES;
}

-(BOOL) textFieldShouldReturn:(UITextField *) textFieldView {
[textFieldView resignFirstResponder];
return NO;
}

//---when a TextField view is done editing---
-(void) textFieldDidEndEditing:(UITextField *) textFieldView {
currentTextField = nil;
}

//---when the keyboard appears---
-(void) keyboardDidShow:(NSNotification *) notification {
if (keyboardIsShown) return;

NSDictionary* info = [notification userInfo];

//---obtain the size of the keyboard---
NSValue *aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;

//---resize the scroll view (with keyboard)---
CGRect viewFrame = [v_comment_editor frame];
viewFrame.size.height -= keyboardSize.height;
v_comment_editor.frame = viewFrame;

//---scroll to the current text field---
CGRect textFieldRect = [currentTextField frame];
[v_comment_editor scrollRectToVisible:textFieldRect animated:YES];

keyboardIsShown = YES;
}

//---when the keyboard disappears---
-(void) keyboardDidHide:(NSNotification *) notification {
NSDictionary* info = [notification userInfo];

//---obtain the size of the keyboard---
NSValue *aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;

//---resize the scroll view back to the original size (without keyboard)---
CGRect viewFrame = [v_comment_editor frame];
viewFrame.size.height += keyboardSize.height;
v_comment_editor.frame = viewFrame;

keyboardIsShown = NO;
}

-(void) viewWillDisappear:(BOOL)animated {
//---removes the notifications for keyboard---
[[NSNotificationCenter defaultCenter]
removeObserver:self
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter]
removeObserver:self
name:UIKeyboardWillHideNotification
object:nil];
}

最佳答案

您显示的代码会在显示键盘时调整 View 的大小。当键盘再次隐藏时,它看起来应该会恢复到正确的大小。

如果您在使用其中一个 subview 时遇到问题,可能是因为它的自动调整大小掩码设置的方式很奇怪。

最简单的解决方法是在您的处理类中有一个实例变量,例如:

CGRect tableframe;

并在keyboarddidshow函数中将正确的frame存入其中,并在**keyboardDidHide**方法中将表格恢复为原始frame。

关于iphone - 键盘显示后 TableView 内容高度已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9304309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com