是否有可能在底部弹出UITableView
,而不是顶部?如果是这样,请告诉我代码。
答案 0 :(得分:38)
我没有更改bounces
属性,而是将其添加到UIScrollViewDelgate
方法:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.y<=0) {
scrollView.contentOffset = CGPointZero;
}
}
答案 1 :(得分:5)
适用于swift 4
extension YourViewController: UIScrollViewDelegate{
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView == tableView {
let a = scrollView.contentOffset
if a.y <= 0 {
scrollView.contentOffset = CGPoint.zero // this is to disable tableview bouncing at top.
}
}
}
}
答案 2 :(得分:4)
应该可以通过观察UITableview的contentOffset属性来实现。
[_tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:NULL];
。 。并防止抵消负面。
答案 3 :(得分:2)
您可以尝试使用UIScrollViewDelegate
方法检测拖动方向并适当调整bounces
属性吗?
答案 4 :(得分:2)
我也遇到过这个问题,我的解决方案是:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.y > 100) {
scrollView.bounces = NO;
}else{
scrollView.bounces = YES;
}
}
我在我的项目中使用此代码并且运行良好。
答案 5 :(得分:1)
func scrollViewDidScroll(_ scrollView: UIScrollView) {
//Check to make sure this only applies to tableview
//and not other scrollviews inside your View/ViewController
if scrollView.superclass == UITableView.self {
//bounce will only be true if contentOffset.y is higher than 100
//I set 100 just to make SURE, but you can set >= 0 too
scrollView.bounces = scrollView.contentOffset.y > 100
}
}
答案 6 :(得分:0)
在swift 2.2中:
func scrollViewDidScroll(scrollView: UIScrollView) {
if scrollView.contentOffset.y <= 0 {
scrollView.contentOffset = CGPointZero
}
}
答案 7 :(得分:0)
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.y <= 0) {
scrollView.contentOffset = CGPointZero;
scrollView.showsVerticalScrollIndicator = NO;
} else {
scrollView.showsVerticalScrollIndicator = YES;
}
}
@Liron Berger的解决方案将导致VerticalScrollIndicator仍然显示,只需将showsVerticalScrollIndicator
设置为NO
即可解决此问题