菜鸟教程小白 发表于 2022-12-12 22:18:24

iOS - 向上推时停止 UIRefreshControl


                                            <p><p>我最近实现了 <code>UIRefreshControl</code> 以在下拉时从 iCloud 加载数据,但是,我发现用户在需要时将 <code>UITableView</code> 推回很直观停止刷新。我无法弄清楚如何在不使用 <code>UIPanGestureRecognizer</code> 的情况下检测到这一点,这会删除我的 <code>UITableView</code> 的功能。</p>

<p>有什么方法可以检测到在刷新期间将 <code>UITableView</code> 推回,而不删除现有 tableview 的功能?谢谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在这种情况下我要做的是利用 UITableViewDelegate 符合 UIScrollViewDelegate 的事实。这样你就可以知道你的 tableView 上何时发生了不同的滚动事件。如果您是 UITableViewController 的子类,那么您已经符合 UITableViewDelegate,所以一切都很好。 </p>

<p>我做的第一件事是为 contentOffset 设置一个属性,以便在开始拖动时记录它。</p>

<pre><code>@property (nonatomic, strong) NSNumber *contentOffsetAtStartOfDragging;
</code></pre>

<p>我选择将其设为 NSNumber 而不是说看起来更自然的 CGFloat 的原因是,我不希望该属性在不需要时卡在某个值上。当该属性对我不再有用时,我希望它为零。不过,这只是我的设计选择,不会有任何区别。 </p>

<p>无论如何,我这样做的方式是在拖动开始时记录 contentOffset,然后在拖动结束时将其与 contentOffset 进行比较。那就是我知道用户滚动到的 contentOffset 是否低于开始拖动时的值,我可以结束刷新。</p>

<p>此外,当拖动完成后,出于上述原因,我将我的属性设置为 nil。</p>

<pre><code>- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    if () {
      self.contentOffsetAtStartOfDragging = ;
    }
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    if ( &amp;&amp;
      scrollView.contentOffset.y &gt; )
    {
      ;
    }

    self.contentOffsetAtStartOfDragging = nil;
}
</code></pre>

<p>希望这对您有所帮助。让我知道它是否适合你。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iOS - 向上推时停止 UIRefreshControl,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23794957/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23794957/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS - 向上推时停止 UIRefreshControl