情况:我有一个位于视图顶部的各种工具栏(不是 UIToolbar,只是自定义 UIView)。该工具栏有许多按钮。在它的正下方,我有一个带有表单的滚动视图。当点击工具栏上的按钮时,相应的表单应该从右侧或左侧动画到屏幕上,具体取决于点击哪个按钮。我不希望工具栏继续前进。但是,当用户在滚动视图上向上或向下滚动时,我确实希望工具栏向上滚动。我现在完成它的方式是在 scrollViewDidScroll 委托方法中(注意,如果它是通过按下工具栏上的按钮,我只允许水平滚动):
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if(scrollView.contentOffset.x != 0 && _shouldScrollHorizontally == NO)
{
CGPoint offset = scrollView.contentOffset;
offset.x = 0;
scrollView.contentOffset = offset;
}
CGRect buttonFrame = [_buttons frame];
buttonFrame.origin.y = -scrollView.contentOffset.y + 10;
[_buttons setFrame:buttonFrame];
}
但是,我担心这效率低下并且会导致一些延迟。我想知道是否有更好的方法来完成我想要实现的目标。
归根结底,如果滚动视图水平滚动,我希望工具栏保持静止,但如果滚动视图垂直滚动,我希望工具栏与滚动视图一起移动。
感谢您的任何建议!