gpt4 book ai didi

iphone - iPhone 的 UIView 的自定义滚动条(使长滚动不吸)

转载 作者:太空狗 更新时间:2023-10-30 03:08:51 25 4
gpt4 key购买 nike

在帖子中,Making Long Scrolls on the iPhone Not Suck , Aza Raskin 描述了另一种滚动条控件,它更适合在很长的页面上移动:

Sticky Scroll Indicator

滚动条“保持一段时间”以激活它并不重要;我只需沿着 iPhone 屏幕的右边缘滑动即可捕获滚动条 handle 。这个想法是,如果我在物理屏幕上将 handle 向下拖动 3/4,我就会在页面上向下拖动 3/4。

Dropbox iPhone 应用程序(它很棒,顺便说一句!)具有用于长 PDF 文档的这种滚动条。常规滚动是通过在 handle 以外的任何地方拖动来完成的;拖动 handle 将 View 移动到该位置。这似乎是“从头开始”实现的,因为我认为 SDK 不够灵活,无法自定义现有滚动条的行为。

但是,Dropbox 使用 native 文档查看器在 iPhone 上显示文档,因此他们以某种方式为其添加了滚动条功能。看到滚动条句柄了吗?您可以拖动它以快速到达文档中的其他位置。

Dropbox scrollbar at the top Dropbox scrollbar at the bottom

这个概念非常类似于索引栏在 UITableView(即 Contacts.app)中的工作方式;索引显示为表格右侧的一个栏(例如,“a”到“z”),您可以触摸特定标签以跳转到目标部分。然而,在这种情况下,一个很长的页面没有部分,它应该适用于一般用途的滚动,而不是跳转到部分。

那么我该如何着手实现这种滚动方法呢?我正在寻找一般想法和具体实现细节。如果存在开源实现,我也很感兴趣(这似乎是一个通用的问题/解决方案)。

最佳答案

总体思路:

我捕获了 Dropbox 应用程序(它很棒)并试了一下。看起来 pdf 查看需要一些照片应用程序,因为它有条件地显示半透明的导航栏和触摸工具栏,除了支持滚动条。我很确定发生的事情是他们有一个自定义 View Controller 拦截触摸并做出相应的 react 。

触摸:

  1. 如果是点击,显示/隐藏导航栏和工具栏。
  2. 如果开启洗涤器,开始跟踪触摸并滚动scrollview/webview(无论它们是什么显示)。我确定滚动很简单,比如scrollView.contentOffset =
    CGPointMake(0, (scrubber.y/[UIScreen mainScreen].bounds.size.height) *
    ScrollView .contentSize.height)
    。 3)
  3. 否则,将触摸传递给封闭的 View 。

PDF 显示可能还有其他隐藏的魔法(我从来没有在 cocoa touch 中做过)但有些事情告诉我这是他们的基本过程。

关于iphone - iPhone 的 UIView 的自定义滚动条(使长滚动不吸),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4338618/

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