gpt4 book ai didi

ios - 下拉显示 View

转载 作者:可可西里 更新时间:2023-11-01 04:13:56 31 4
gpt4 key购买 nike

我有 UITableView。我想在 tableView 上方添加一个 UITextField,可以通过下拉 tableView 来访问它。我想通过拉起 tableView 来隐藏我的 textField。我怎样才能做到这一点?这是我尝试过的:

[self.messagesTableView addSubview:self.messageField];

- (UITextField*)messageField
{
if (!_messageField)
{
_messageField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, self.messagesTableView.frame.size.width, kMessageFieldHeight)];
_messageField.autoresizingMask = UIViewAutoresizingFlexibleWidth;
_messageField.backgroundColor = [UIColor greenColor];
}
return _messageField;
}

- (void)scrollViewDidScroll:(UIScrollView*)scrollView
{
if (scrollView == self.messagesTableView)
{
CGRect newFrame = self.messagesTableView.frame;
newFrame.origin.y = self.messagesTableView.contentOffset.y + kMessageFieldHeight;
self.messagesTableView.frame = newFrame;
}
}

最佳答案

我在我的应用程序中完成了此类功能。我所做的只是按照步骤进行。

1) 添加一个view到tableView的负数位置。在此 View 中,您可以根据需要添加文本字段或按钮。

UIView *viewForSearchBar = [[UIView alloc]initWithFrame:CGRectMake(0, -50, 320, 50)];
viewForSearchBar.backgroundColor = [UIColor clearColor];
[self._tableView addSubview:viewForSearchBar];
self._tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);

2)现在当用户开始拖动tableview(tableview的实际scrollview)时,你可以根据它调用scrollview的委托(delegate)方法来测试它。

当您向下拖动/滚动 tableView 时,您将得到 contentOffset.y 将小于 0,我在代码中已在此处进行了解释。

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

if (decelerate) {
[txtSearch resignFirstResponder];
}

id<UILayoutSupport> topLayoutGuide = self.topLayoutGuide;
if(scrollView.contentOffset.y < 0)
{
UIView* hiddenHeader = ...; // this points to the hidden header view above
CGRect headerFrame = [hiddenHeader frame];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.2];
self._tableView.contentInset = UIEdgeInsetsMake(headerFrame.size.height + [topLayoutGuide length], 0, 0, 0);

[UIView commitAnimations];
} else {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.2];

self._tableView.contentInset = UIEdgeInsetsMake([topLayoutGuide length], 0, 0, 0);

[UIView commitAnimations];
}
}

这两个步骤对我来说效果很好,因为我已经实现了。让我添加图像来验证它。

enter image description here

enter image description here

如果还有什么问题可以问我。

关于ios - 下拉显示 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21670202/

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