我想在我的iPhone上向下滚动两个栏。当我向上滚动时,它们应该再次出现..我该如何处理?
答案 0 :(得分:7)
- (void)scrollViewWillBeginScroll :(UIScrollView *)scrollView {
if (scrollView.contentOffset.y < lastOffset.y) {
[toolBar setHidden:YES];
[[[self navigationController] navigationBar] setHidden:YES];
} else{
// unhide
}
}
- (void)scrollViewDidScroll :(UIScrollView *)scrollView {
/// blah blah
lastOffset = scrollView.contentOffset;
}
注意:lastOffset
是CGPoint
,它位于您的标头文件中:@Interface
。
答案 1 :(得分:4)
接受的答案对我不起作用,因为scrollViewWillBeginScroll:
不是委托方法。
相反,我做
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"BarsShouldHide" object:self];
}
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView
willDecelerate:(BOOL)decelerate
{
if(!decelerate)
[[NSNotificationCenter defaultCenter] postNotificationName:@"BarsShouldUnhide"
object:self];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"BarsShouldUnhide"
object:self];
}
app对象中的任何位置都可以侦听此通知,例如
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserverForName:@"BarsShouldHide"
object:nil
queue:nil
usingBlock:^(NSNotification *note) {
//hide tab bar with animation;
}];
[[NSNotificationCenter defaultCenter] addObserverForName:@"BarsShouldUnhide"
object:nil
queue:nil
usingBlock:^(NSNotification *note) {
//Unhide tab bar with animation;
}];
}
此代码将隐藏任何滚动条。如果你想只使用down,那么与接受的答案相同的locationOffset
技巧应该有效。
答案 2 :(得分:0)
这是我在Swift中的解决方案;它工作得很漂亮
func scrollViewDidScroll(scrollView: UIScrollView) {
let navController: UINavigationController = self.navigationController!
if self.collectionView.panGestureRecognizer.translationInView(self.view).y <= 0.0 {
defaultCenter.postNotificationName("stuffShouldHide", object: self)
} else {
defaultCenter.postNotificationName("stuffShouldUnhide", object: self)
}
}
答案 3 :(得分:0)
您可以查看这个,可以从iOS8获得,我认为这与您正在寻找的相反......但值得检查,因为它是标准的,这就是Safari的工作方式。
夫特
var hidesBarsOnSwipe:Bool
目标-C
@property(非原子,readwrite,assign)BOOL hidesBarsOnSwipe 讨论
当此属性设置为YES时,向上滑动会隐藏导航 栏和工具栏。向下滑动再次显示两个条形。如果 工具栏没有任何项目,即使在a之后仍然可见 刷卡。此属性的默认值为NO。