我有UITableView,它显示从连接WiFi的设备收到的数据。
我想做一个相当沼泽标准的手势响应,拖动一张桌子,然后释放它,以触发更新。
我想我可以将滑动手势识别器附加到桌子的基板视图中,但我想知道是否有办法直接从桌子本身拦截这个手势。
META:
我一直在浏览各种文档和诸如此类的东西。我还没有 之前这样做,所以我从来没有想过。现在我明白了 可能应该考虑一下。
如果这是一个明显的解决方案,我不介意被告知,只要 你帮我找到了“明显的”补救措施。我会删除这个问题 这是一个糟糕的。
然而,我还没有找到解决方案,而且我通常都相当擅长 那种事。
更新我更改了标题以更好地反映我的要求。
答案 0 :(得分:7)
完全原生的方法是在UIViewController中使用UITableViewController,例如
{
tableViewController = [[UITableViewController alloc] init];
[tableViewController setTableView:myTableView];
refreshControl = [[UIRefreshControl alloc] init];
[tableViewController setRefreshControl:refreshControl];
[refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
}
答案 1 :(得分:1)
如果您向UIScrollViewDelegate
添加UITableView
,则可以回复scrollViewDidScroll:
个事件。否定contentOffset.y
值表示您的用户已在您的桌面视图顶部停了下来。
答案 2 :(得分:0)
这就是我最终要做的事情。即使它不是最合法的"合法的"做事的方式,它仍然高效,荒谬简单:
我设置了一个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
}
}
&#34; -60&#34;是因为我在将其设置为静态之前寻找最佳偏移量。