【发布时间】:2014-02-21 08:35:06
【问题描述】:
注意:在这里查看 Thuy 的 UINavBar 子类:
https://stackoverflow.com/a/20720359/294884
如果您正在解决这个问题,GTScrollNavigationBar 已经接近于解决导航栏问题的现成解决方案!
例如:在 2014 年的 iPhone 上,打开 Safari,加载任何网页。
查看底部的 iOS 工具栏。
现在上下移动你的手指只有几个像素。
基本上是底部的工具栏,用手指移动。此外,工具栏稍后会在您滚动页面时出现/消失,遵循特定的逻辑。
但是交互规则非常复杂,包括隐藏时的手指开/关、距离匹配、页面下方的手势、非常短页面的特殊情况等等.
我想完全复制 Apple 的行为。
(我们应该匹配 Apple UX 似乎是明智的。)
有没有办法做到这一点? Apple 是否为此提供了一个我不知道的一步命令?还是您必须费力地复制这个概念?
谢谢。
顺便说一句,以下逻辑是可靠的,并且将大致复制苹果的做法:
-(void)feedIsScrolled:(CGFloat)scrollNewOverallYPosition
{
// call this routine when scrollViewDidScroll:
self.feedIsScrolledDelta =
scrollNewOverallYPosition - self.feedIsScrolledPrevious;
self.feedIsScrolledPrevious =
scrollNewOverallYPosition;
// nb, you do those only in this routine, NOT the following routine.
if ( scrollNewOverallYPosition < 15.0 )
{
.. animate in the bar
return;
}
if ( self.feedIsScrolledDelta > 0.0 )
.. animate away the bar
}
-(void)feedIsThrown:(CGFloat)scrollNewOverallYPosition
{
// call this routine when scrollViewDidEndDragging:
// BUT ONLY when willDecelerate: is true
if ( self.feedIsScrolledDelta <= 0.0 )
.. animate in the bar
else
.. animate away the bar
}
顺便说一句,你当然可以使用
(void)setToolbarHidden:(BOOL)hidden animated:(BOOL)animated
上下滑动 UIToolbar。但是这对“手指匹配”没有任何帮助。
注意:例如,这里是在 SO 上看到的一个极好的解决方案:
https://stackoverflow.com/a/21049991/294884
您可以这样编程,实现 Apple 示例中的每条规则,以适应您对每一点的品味。 (当你接近底部时该怎么办,手指向上,哪个方向等等)我的意思是我只是假设有人已经完成了所有完全匹配Apple UX的工作--呵呵!
【问题讨论】:
-
这不是 uiwebview 中的无误行为吗?
-
您好 Raster -- 嗯,我不这么认为,不。它与 UIWebView 没有任何联系。您可以在任何滚动视图上触发。
-
顺便说一句,我没有投反对票。我怀疑是否有任何一行魔术命令可以复制这一点——它可能深埋在 Apple 的 iOS 框架代码中。这意味着您将不得不手动实施。我仍然等待纠正。
-
感谢您链接到其他帖子。您将我的解决方案称为“临时”尝试,但它还能是什么?我的意思是,我们所能做的就是尝试匹配我们看到的行为。
-
还要注意,
UIToolbar或者在我的情况下是UINavigationBar并没有什么特别之处。我已经为工作中的应用程序实现了类似的行为,该应用程序在用户滚动时隐藏了自定义视图。这个概念实际上非常简单。只需根据自己的口味调整即可。
标签: ios7 uiscrollview uigesturerecognizer uitoolbar