2012-03-22 16 views
7

Tôi đã thêm văn bản rất lớn vào UItextView. Giá trị ban đầu của tôi là -55. Sau đó, tôi cuộn xuống dưới cùng của UITextView. Mức bù trừ của tôi là 406.Tôi không hiểu đầy đủ scrollRectToVisible khi tôi đang sử dụng contentInset

Sau đó, tôi gọi là scrollToZero. Mức bù của tôi là -55. Tôi gọi scrollToZero một lần nữa và bù đắp của tôi là 0. Tại sao scrollToZero lại không thể đoán trước? Tôi không hiểu tại sao bù đắp thay đổi khi tôi nhấp một lần nữa.

-(void) viewDidLoad 
{ 
[super viewDidLoad]; 
textView.text = @"Very big text"; 
textView.contentInset = UIEdgeInsetsMake(55.0, 0, 0, 0); 
[textView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO]; 
} 

-(IBAction) scrollToZero:(id)sender 
{ 
[textView scrollRectToVisible:CGRectMake(0, 0, textView.frame.size.width, textView.frame.size.height) animated:NO]; 
} 
-(IBAction) onLog:(id)sender 
{ 
NSLog(@"___content offset %f", textView.contentOffset.y); 
} 

Trả lời

8

Tôi đã chiến đấu với vấn đề này. Tôi tin rằng đây là một lỗi trong lớp UIScrollView, tôi không thấy lời giải thích nào khác.

Trước tiên hãy đặt số inset của bạn về 0, hãy gọi scrollRectToVisible: animated :, và sau đó khôi phục các loại insets của bạn. Nó chỉ quan trọng nếu di chuyển đến rect là 'trái' của rect hiện tại. 'quyền của' hoạt động như mong đợi.

CGRect rect = self.scrollView.bounds; 
CGRect scrollToRect = CGRectOffset(rect, scrollDelta, 0); 

if (CGRectIsLeftOfRect(scrollToRect, rect)) { 
    UIEdgeInsets insets = self.carouselView.contentInset; 
    self.scrollView.contentInset = UIEdgeInsetsZero; 
    [self.scrollView scrollRectToVisible:scrollToRect animated:animated]; 
    self.scrollView.contentInset = insets; 
} else { 
    [self.scrollView scrollRectToVisible:scrollToRect animated:animated]; 
} 
+0

Tôi vừa nhận ra rằng tôi chỉ có insets ở bên trái, và có lẽ nếu tôi có chúng ở bên phải vấn đề này cũng sẽ xảy ra khi di chuyển đến một rect đó là phải tắt hình chữ nhật hiện tại. – emp

+0

Tôi đồng ý với bạn. Đây có lẽ là một lỗi. – Voloda2

+0

ScrollDelta ở đây là gì? –

Các vấn đề liên quan