关于TableVIew的上下滚动如何探测其边界
UITableView
is a subclass of UIScrollView
, and UITableViewDelegate
conforms to UIScrollViewDelegate
. So the delegate you attach to the table view will get events such as scrollViewDidScroll:
, and you can call methods such as contentOffset
on the table view to find the scroll position.
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat height = scrollView.frame.size.height;
CGFloat contentYoffset = scrollView.contentOffset.y;
CGFloat distanceFromBottom = scrollView.contentSize.height - contentYoffset;
if(distanceFromBottom < height)
{
NSLog(@"end of the table");
}
}
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView {
CGPoint offset = aScrollView.contentOffset;
CGRect bounds = aScrollView.bounds;
CGSize size = aScrollView.contentSize;
UIEdgeInsets inset = aScrollView.contentInset;
float y = offset.y + bounds.size.height - inset.bottom;
float h = size.height;
// NSLog(@"offset: %f", offset.y);
// NSLog(@"content.height: %f", size.height);
// NSLog(@"bounds.height: %f", bounds.size.height);
// NSLog(@"inset.top: %f", inset.top);
// NSLog(@"inset.bottom: %f", inset.bottom);
// NSLog(@"pos: %f of %f", y, h); float reload_distance = ;
if(y > h + reload_distance) {
NSLog(@"load more rows");
}
}
上述代码可以添加到tableViewDelegate的类当中~
下面是我自己实现的代码,这样按钮滚动不过超过tableview的范围了
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGFloat height = scrollView.frame.size.height; CGFloat contentYoffset = scrollView.contentOffset.y; CGFloat distanceFromBottom = scrollView.contentSize.height - contentYoffset; if(distanceFromBottom < height)
{
// NSLog(@"end of the table");
CGFloat realOffsetY = scrollView.contentSize.height - height;
[scrollView setContentOffset:CGPointMake(, realOffsetY)]; }else if(contentYoffset < ){
// NSLog(@"out of the table head");
// scrollView.scrollsToTop = YES;
[scrollView setContentOffset:CGPointMake(, )];
}
} #pragma mark - button action
- (IBAction)upperButtonClick:(id)sender {
NSLog(@"Upper Button was Clicked");
CGPoint contentOffset = self.tableView.contentOffset;
contentOffset.y -= OFFSET_VALUE; // Adjust this value as you need
[self.tableView setContentOffset:contentOffset animated:YES];
} - (IBAction)downButtonClick:(id)sender {
NSLog(@"Down Button was Clicked");
CGPoint contentOffset = self.tableView.contentOffset;
contentOffset.y += OFFSET_VALUE; // Adjust this value as you need
[self.tableView setContentOffset:contentOffset animated:YES];
}
关于TableVIew的上下滚动如何探测其边界的更多相关文章
- tableView和scrollView滚动起冲突
tableView和scrollView滚动起冲突 tableView也是继承的scrollView,所以在滚动的时候也会触发scrollView的代理方法,在scrollViewDidScroll中 ...
- iOS9 TableView和ScrollView滚动不响应问题
今天开始适配iOS9,发现在有UITableView或是ScrollView的界面滚动不灵敏有些卡顿,研究了下是因为tableview的cell里有可以相应点击事件的Button,当我点击到Butto ...
- 关于tableView的优化
现在市场上的iOS应用程序界面中使用最多的UI控件是什么? 答案肯定是UITableView,几乎每一款App都有很多的界面是由UITableView实现的,所以为了做出一款优秀的App,让用户有更好 ...
- 论坛类应用双Tableview翻页效果实现
作为一名篮球爱好者,经常使用虎扑体育,虎扑体育应用最核心的部分就是其论坛功能,无论哪个版块,论坛都是其核心,而其论坛部分的实现又别具一格,它以两个tableview的形式翻页滚动显示,而不是常见的那种 ...
- TableView的性能优化
现在市场上的iOS应用程序界面中使用最多的UI控件是什么? 答案肯定是UITableView,几乎每一款App都有很多的界面是由UITableView实现的,所以为了做出一款优秀的App,让用户有更好 ...
- 实现外卖选餐时两级 tableView 联动效果
最近实现了下饿了么中选餐时两级tableView联动效果,先上效果图,大家感受一下: 下面说下具体实现步骤: 首先分解一下,实现这个需求主要是两点,一是点击左边tableView,同时滚动右边tabl ...
- iOS资讯详情页实现—WebView和TableView混合使用(转)
iOS资讯详情页实现—WebView和TableView混合使用 如果要实现一个底部带有相关推荐和评论的资讯详情页,很自然会想到WebView和TableView嵌套使用的方案. 这个方案是WebVi ...
- tableView的嵌套
1,subTableView需要开启多手势识别,多层tableView都会响应滚动事件(如果底层是scroll 依然会响应,这样滚动tableview时,scroll也会滚动,导致滚动过于灵活)2,通 ...
- [转]IOS 学习笔记(8) 滚动视图(UIScrollView)的使用方法
下面介绍pageControl结合ScrollView实现连续滑动翻页的效果,ScrollView我们在应用开发中经常用到,以g这种翻页效果还是很好看的,如下图所示: 通过这个例子,我们重点学习UIS ...
随机推荐
- C#实现文件下载的几种方法
//WriteFile实现下载 protected void Button2_Click(object sender, EventArgs e) { /* using System.IO; */ st ...
- SPSS时间序列:频谱分析
一.频谱分析(分析-预测-频谱分析) “频谱图”过程用于标识时间序列中的周期行为.它不需要分析一个时间点与下一个时间点之间的变异,只要按不同频率的周期性成分分析整体序列的变异.平滑序列在低频率具有更强 ...
- python3.5在print和input上的几个变化
1. 在python3.5中使用print,打印内容必须用括号()括起来.python2.7中可以不用括号,如果你加了括号,代码在python2.7中也是可以正常运行的. python3.5 exam ...
- HTTP Status 500 - javax.servlet.ServletException
运行某个jsp页面时提示 type Exception report message javax.servlet.ServletException: java.lang.NoClassDefFound ...
- C# 16进制与字符串、字节数组之间的转换(转)
1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToSt ...
- OpenLDAP 安装及配置 笔记
首先下载 OpenLdap(Ldap服务器) 和 LdapAdmin(客户端) 两个软件 OpenLDAPforWindows_2.4.39.part1.rar OpenLDAPforWindows_ ...
- windows server 时间同步
域环境,加入域的客户端时间同步服务器时间 问题:服务器存在一种情况,不存在"intelnet时间"选项卡 解决办法:手动修改为正确时间 客户端运行: CMD-->w32tm ...
- thinkphp数据库添加表单提交的数据
$data['catename'] = I('catename'); 获取表单的数据 $cate=D('cate'); 实例化cat ...
- 最新百度音乐api
一直都想做网络音乐播放器,但是自己又没有服务器,根本就不能实现,也没那个能力实现.唯一的办法就是借助别人的API. 网上公布的API特别少,像能够直接得到音乐文件的真是地址的几乎没有,有的也只是截取流 ...
- asp.net跨页面传值
a.aspx.cs //获取a中的id HttpCookie objCookie = new HttpCookie("myCookie", id); Response.Cookie ...