Ios 什么';这是获得“a”的最佳方式;“拉动以刷新”;从实用的角度来看?

Ios 什么';这是获得“a”的最佳方式;“拉动以刷新”;从实用的角度来看?,ios,objective-c,uitableview,swipe,Ios,Objective C,Uitableview,Swipe,我有一个摄像头,它显示从连接WiFi的设备接收到的数据 我想做一个相当标准的手势反应,将一张桌子拖下来,然后释放它,以触发一个更新 我想我可以将滑动手势识别器附加到桌子的基底视图,但我想知道是否有办法直接从桌子本身截取该手势 META: 我一直在看各种各样的文件等等。我还没吃过 以前就这么做了,所以我从没想过。现在我明白了 也许应该考虑一下 如果这是一个显而易见的解决方案,我不介意被告知,只要 你帮我找到“明显的”补救办法。如果有必要,我会删除这个问题 这是个坏主意 然而,我还没有找到解决办法,

我有一个摄像头,它显示从连接WiFi的设备接收到的数据

我想做一个相当标准的手势反应,将一张桌子拖下来,然后释放它,以触发一个更新

我想我可以将滑动手势识别器附加到桌子的基底视图,但我想知道是否有办法直接从桌子本身截取该手势

META:

我一直在看各种各样的文件等等。我还没吃过 以前就这么做了,所以我从没想过。现在我明白了 也许应该考虑一下

如果这是一个显而易见的解决方案,我不介意被告知,只要 你帮我找到“明显的”补救办法。如果有必要,我会删除这个问题 这是个坏主意

然而,我还没有找到解决办法,而且我通常在这方面相当在行 那种事

更新为了更好地反映我的要求,我更改了标题


如果将
UIScrollViewDelegate
添加到
UITableView
,则可以响应
scrollViewDidScroll:
事件。负的
contentOffset.y
值表示您的用户已从tableview的顶部下拉。

完全自然的方法是在UIViewController中使用UITableViewController,例如

{
    tableViewController = [[UITableViewController alloc] init];
    [tableViewController setTableView:myTableView];

    refreshControl = [[UIRefreshControl alloc] init];
    [tableViewController setRefreshControl:refreshControl];
    [refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
}

这就是我最后做的。尽管这不是最“合法”的做事方式,但它仍然非常有效,而且非常简单:

我设置了一个scrollview委托陷阱,如下所示,并将其添加到委托类中:

//*******************************************
// Reacts to the table's scroller being changed.
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
                     withVelocity:(CGPoint)velocity
              targetContentOffset:(inout CGPoint *)targetContentOffset {
#ifdef DEBUG
    NSLog ( @"MyViewController::scrollViewWillEndDragging:%@withVelocity:(%f,%f)targetContentOffset:(%f,%f)",scrollView,velocity.x, velocity.y, targetContentOffset->x, targetContentOffset->y );
#endif

    // We have to have had a "hard pull South" to trigger a refresh of the objects.
    if ( (velocity.y < 0) && ([scrollView contentOffset].y < -60) ) {
#ifdef DEBUG
        NSLog ( @"We will perform a new refresh." );
#endif
    }
}
//*******************************************
//对更改表格的滚动条作出反应。
-(无效)ScrollViewWillendDraging:(UIScrollView*)scrollView
withVelocity:(CGPoint)速度
targetContentOffset:(输入输出CGPoint*)targetContentOffset{
#ifdef调试
NSLog(@“MyViewController::ScrollViewWillendDraging:%@withVelocity:(%f,%f)targetContentOffset:(%f,%f)”,scrollView,velocity.x,velocity.y,targetContentOffset->x,targetContentOffset->y);
#恩迪夫
//我们必须有一个“硬拉南”触发刷新的对象。
如果((velocity.y<0)和([scrollView contentOffset].y<-60)){
#ifdef调试
NSLog(@“我们将执行新的刷新。”);
#恩迪夫
}
}

“-60”是因为在将其设置为静态之前,我正在寻找最佳偏移量。

您是否查看了刷新表视图的拉动功能?嗯。。。这可能是我们问问题的方式。。。我会挖得更深。即使这是一个愚蠢的问题,如果它对任何人都有帮助的话,我也可以不提。我不觉得羞耻。是的,差不多吧。我已经在我的表视图中实现了很多次了。为什么不实现
UITableView
的标准内置“pull-to-refresh”功能呢?为什么要用手势来实现你自己?恐怕@Tim的答案是正确的。。。有一种土生土长的方式做这件事很好!几分钟后你会得到一张绿色支票!谢谢@MAGSHARE这就是我刚才说的和rmaddy提到的。