1

当用户在 UITable 视图中滚动到 0.0 的 Y 偏移量以下时,我正在尝试下拉 UIView(如下拉菜单)。如果用户下拉至 -80.0 Y-Offset 以下,则 PullDownMenu 将自行锁定,直到用户以其他方式滚动。

我对 UITableView 的 ScrollView 的实现如下: [ lock:false最初]

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if(isChangingOffset)
        return;
    if(resetDrag)
    {
        [self setScrollViewOffset:scrollView offsetTo:CGPointMake(0, -80.0)];
        resetDrag = false;
    }
    float xx = scrollView.contentOffset.y;
NSLog(@"Offset :%f",xx);
    if(xx - begginOffset > 0.0 && lock && !doneDragging)
    {
        offsetChange = xx - begginOffset;
        begginOffset = xx;
        lock = false;
        [self setScrollViewOffset:scrollView offsetTo:CGPointMake(0, -80.0)];
    }
    if(lock){
        [self setScrollViewOffset:scrollView offsetTo:CGPointMake(0, -80.0)];
    }
    if(xx <=-80.0)
    {
        [self setScrollViewOffset:scrollView offsetTo:CGPointMake(0, -80.0)];
        lock = true;
    }
}

- (void)setScrollViewOffset:(UIScrollView *)scrollView offsetTo:(CGPoint)offset{

- (void)setScrollViewOffset:(UIScrollView *)scrollView offsetTo:(CGPoint)offset{
    isChangingOffset = true;
    scrollView.contentOffset = CGPointMake(0, -80.0);
    isChangingOffset = false;
}

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    float x = scrollView.contentOffset.y;
    begginOffset = x;
    doneDragging = false;
    if(lock){
        resetDrag = true;
    }
}

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)减速

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    doneDragging = true;
}

这是一个关于它的外观的工作视频:视频

蓝色是我在 UITableView 中作为子视图添加的 UIView。

我的问题是,我正在尝试下拉一个 UIView,让我们根据 UITableView 的 contentOffset 将其称为 menuView(这不是 tableView 的子视图)。我可以像添加蓝色视图一样在 UITableView 中简单地添加 menuView。但这只能通过表格访问,即当我滚动到顶部并将其向下拖动时。但我希望 menuView 在任何时候都像通知中心一样“可拉动”。在使用滚动视图的 Y-contentOffset 时,menuview 下拉动画不流畅。它中途停止或过低。这是生涩的,并不总是一样的。我该如何实现呢?

4

1 回答 1

2

这是您的示例代码UIScrollView

视图控制器.h

@interface ViewController: UIViewController {

    UIScrollView *scrollView;
}

@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;

视图控制器.m

@implementation ViewController

@synthesize scrollView;

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        [self scrollView];
    }

    - (void)scrollText{

        [scrollView setContentSize:CGSizeMake(320, 800)];
        scrollView.scrollEnabled = YES;
        scrollView.pagingEnabled = YES;
        scrollView.clipsToBounds = YES;

    }

此外,您可以从代码或界面构建器中放入您想要的 wat。

对于 PullDownMenu,您可以查看此 GitHub:

MBPullDownController

希望这对您有所帮助并简化您的代码;)

于 2013-07-03T11:00:53.300 回答