2013-02-15 29 views
6

Tôi có UIScrollView ngang. Tôi muốn thực hiện một biến thể của hoạt ảnh "pull-to-reset", nơi tôi kéo tất cả các cách qua cạnh phải của kích thước nội dung của chế độ xem cuộn, nhả ngón tay của tôi và có chế độ xem cuộn quay lại (0, 0) bù đắp nội dung.Hủy trả lại UIScrollView sau khi kéo

phương pháp đại biểu của tôi trông như thế này:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { 
    //check if it exceeds a certain critical value 
    if (scrollView.contentOffset.x - (scrollView.contentSize.width - IMAGE_WIDTH) > 80) { 
     [self doAnimatedScrollTo:CGPointMake(0, 0)]; 
    } 
} 

nơi doAnimatedScrollTo: là một phong tục phương pháp hình ảnh động cần thiết bởi vì tôi muốn kiểm soát thời gian của hoạt hình.

Trong khi tác phẩm này hoạt động, có vẻ như hoạt ảnh được xếp hàng đợi. Hoạt ảnh "bounce" của UIScrollView xảy ra trước, sau đó hoạt ảnh của tôi xuất hiện.

Có cách nào để hủy hoạt ảnh bị trả lại, giữ nội dung bù đắp từ "chụp lại", sau đó thực hiện hoạt ảnh của tôi không?

+0

bạn đã thử bỏ chọn thuộc tính thoát trên thuộc tính i nspector? – jcesarmobile

+0

@jcesar nope, bởi vì tôi muốn tài sản bị trả lại một cách rõ ràng. Tôi chỉ không muốn nửa thứ hai của hoạt hình thực thi - tức là. "thư bị trả lại". – 1actobacillus

+0

Sau đó, tôi không nghĩ rằng nó có thể. Nếu bạn sử dụng thư bị trả lại, bạn phải sử dụng trả lại toàn bộ. Có thể nếu bạn tạo một lớp con, bạn có thể thay đổi toàn bộ hoạt ảnh – jcesarmobile

Trả lời

3

thử này

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { 
    //check if it exceeds a certain critical value 
    if (scrollView.contentOffset.x - (scrollView.contentSize.width - IMAGE_WIDTH) > 80) { 
    [scrollView setContentOffset:CGPointMake(0, 0) animated:YES]; 
    } 
} 
2

tôi thực hiện hủy trả lại hình ảnh động của một UIScrollView.

Tôi muốn thoát khỏi hành vi mặc định trong khi cuộn nhanh lên đầu khi nó bị trả lại. Tuy nhiên nếu scrollview đã ở trên cùng và sau đó người dùng kéo nó xuống và phát hành (tương tự như kéo để làm mới) tôi muốn kiểm soát các thư bị trả lại và làm một cái gì đó tùy chỉnh.

Trong scrollview đại biểu để tôi theo dõi vị trí ban đầu:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.y < 0.1) 
    { 
     isPullingTop = YES; 
    } 
} 

Trong scrollview đại biểu phát hiện nếu cờ được thiết lập và scrollview được kéo đủ

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    if (isPullingTop && scrollView.contentOffset.y < -30) { 

     overrideBounce = YES; 
    } 
    isPullingTop = NO; 
} 

tôi phân lớp scrollview và ghi đè lên setContentOffset:

-(void)setContentOffset:(CGPoint)contentOffset 
{ 
    if (!overrideBounce) 
    { 
     [super setContentOffset:contentOffset]; 
    } 
    else 
    { 
     //customs stuff goes here , for example an animation 
     overrideBounce = NO; 
    } 
} 
Các vấn đề liên quan