Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITableView仅反弹底部边缘_Ios_Swift_Objective C_Uitableview_Uikit - Fatal编程技术网

Ios UITableView仅反弹底部边缘

Ios UITableView仅反弹底部边缘,ios,swift,objective-c,uitableview,uikit,Ios,Swift,Objective C,Uitableview,Uikit,是否可以在底部反弹UITableView,但不能在顶部反弹?如果是,请给我看代码 应该可以通过观察UITableview的contentOffset属性来实现 [_tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:NULL]; 。以及防止偏移量变为负值 您可以尝试使用UIScrollViewDelegate方法来检测拖动方向,并适当调整反弹属性?

是否可以在底部反弹
UITableView
,但不能在顶部反弹?如果是,请给我看代码

应该可以通过观察UITableview的contentOffset属性来实现

[_tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:NULL];

。以及防止偏移量变为负值

您可以尝试使用
UIScrollViewDelegate
方法来检测拖动方向,并适当调整
反弹
属性?

我在
UIScrollViewDelgate
方法中添加了以下内容,而不是更改
反弹
属性:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.y<=0) {
        scrollView.contentOffset = CGPointZero;
    }
}
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView
{
如果(swift 2.2中的scrollView.contentOffset.y:

func scrollViewDidScroll(scrollView: UIScrollView) {
    if scrollView.contentOffset.y <= 0 {
        scrollView.contentOffset = CGPointZero
    }
}
func scrollViewDidScroll(scrollView:UIScrollView){
如果scrollView.contentOffset.y
-(void)scrollViewDidScroll:(UIScrollView*)scrollView
{

如果(scrollView.contentOffset.y我也遇到了这个问题,我的解决方案是:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
 if (scrollView.contentOffset.y > 100) {
     scrollView.bounces = NO;
 }else{
     scrollView.bounces = YES;
 }
}

我在我的项目中使用了这段代码,它运行良好。

适用于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.
            }
        }
    }
}
扩展YourViewController:UIScrollViewDelegate{ func scrollViewDidScroll(scrollView:UIScrollView){ 如果scrollView==tableView{ 设a=scrollView.contentOffset 如果a.y.斯威夫特
func scrollViewDidScroll(scrollView:UIScrollView){
//检查以确保这仅适用于tableview
//而不是视图/视图控制器中的其他滚动视图
如果scrollView.superclass==UITableView.self{
//仅当contentOffset.y大于100时,bounce才会为真
//我设置100只是为了确保,但您也可以设置>=0
scrollView.bounces=scrollView.contentOffset.y>100
}
}

UITableView是UIScrollView的一个子类…这给了我一个想法…观察内容偏移量..如果它变为负数,请锁定回零。您好,我尝试了观察并更改了tableview。偏移量变为负数时会相应反弹为否,但tableview变为负数时会出现故障。您是如何避免的,请与我分享您的想法如果您没有想到,则解决方案。这将阻止滚动到完全顶端。设置
边界
比设置
contentOffset
更好,以避免再次调用代理,尤其是
scrollviewdicscroll:
中有更多代码时。
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.
            }
        }
    }
}