2012-04-11 31 views
10

UIWebView của tôi không được cho phép cuộn dọc. Tuy nhiên, có thể cuộn ngang.Làm cách nào để bật cuộn ngang và tắt cuộn dọc trong UIWebview?

Tôi đã xem qua tài liệu, nhưng không thể tìm thấy bất kỳ gợi ý nào.

Đoạn mã dưới đây sẽ vô hiệu hóa cả hai hướng di chuyển, nhưng tôi muốn chỉ vô hiệu hóa dọc:

myWebView.scrollView.scrollEnabled = NO; 

Làm thế nào để giải quyết vấn đề này?

Trả lời

30

Bật cuộn ngang và vô hiệu hóa dọc di chuyển:

myWebView.scrollView.delegate = self; 
[myWebView.scrollView setShowsVerticalScrollIndicator:NO]; 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.y > 0 || scrollView.contentOffset.y < 0) 
     scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, 0); 
} 

dòng thứ 2 sẽ ẩn các chỉ số cuộn dọc. Kiểm tra xem "scrollView.contentOffset.y < không" sẽ tắt tính năng nảy khi bạn cố cuộn xuống dưới. Bạn cũng có thể làm: scrollView.bounces = NO để làm điều tương tự !! Chỉ cần nhìn vào câu trả lời của Rama Rao tôi có thể nói rằng mã của anh ta sẽ thiết lập lại scrollView thành (0.0) thời điểm bạn cố gắng cuộn theo chiều dọc, từ đó di chuyển bạn ra khỏi vị trí nằm ngang của bạn, điều đó không tốt.

Bật cuộn dọc và vô hiệu hóa di chuyển ngang:

myWebView.scrollView.delegate = self; 
[myWebview.scrollView setShowsHorizontalScrollIndicator:NO]; 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.x > 0) 
     scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y); 
} 

PEACE

3
-(void) scrollViewDidScroll:(UIScrollView *)scrollView{ 
    if (scrollView.contentOffset.y>web.frame.origin.x) { 
     scrollView.contentOffset = CGPointMake(0, 0); 
    } 
} 

Bằng cách này, chúng tôi có thể giải quyết vấn đề. Chụp một đối tượng cuộn toàn cục như sau:

UIScrollView* scrollView =web.scrollView; 

đặt đại biểu cho chế độ xem cuộn sau đó -(void) scrollViewDidScroll:(UIScrollView *)scrollView sẽ được gọi và bạn có thể nhận được kết quả. Tôi đã kiểm tra nó trong cả hai phiên bản (iOS 5 & iOS 4.2)

+0

Tôi nghĩ, điều này sẽ chỉ ẩn các chỉ báo cuộn, không giới hạn cuộn. – danh

+0

Kk bây giờ tôi đã hiểu.U có thể đặt kích thước nội dung như ở trên mà tôi đã chỉnh sửa. –

+0

chỉ định chiều cao dưới chiều cao khung nhìn web thay vì 0. –

1

Để lại scrollEnabled == YES. Chế độ xem cuộn sẽ hạn chế cuộn dựa trên kích thước nội dung. Để chỉ cho phép cuộn ngang, hãy đặt contentSize một cái gì đó như thế này:

scrollView.contentSize = CGSizeMake(1000, scrollView.bounds.size.height); 

Chiều rộng phải liên quan đến chiều rộng của bất kỳ thứ gì đang được cuộn bên trong chế độ xem cuộn.

+0

mã này không giới hạn cuộn trong iOS5.0 –

+0

Xin chào. Tôi có webview trong tablecell. Tôi muốn nó được cuộn ngang. Nhưng khi cuộn theo chiều dọc, nó sẽ bỏ qua và cuộn bảng. – Durgaprasad

3

Để làm cho nó làm việc đầy đủ, viết:

webview.scrollView.delegate = self; 
    [webview.scrollView setShowsHorizontalScrollIndicator:NO]; 

} 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.x > 0) 
     scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y); 
    if (scrollView.contentOffset.x < 0) 
     scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y); 
} 

Tôi vừa thêm hai dòng cuối cùng, bởi vì khi bạn viết nó như pnizzle đã làm, bạn không thể di chuyển từ phải sang bên trái, nhưng vẫn từ trái sang phải.

Chúc may mắn

+0

Touché. Nhưng nếu chế độ xem cuộn không thể cuộn về phía trước thì nó sẽ cho phép bạn cuộn lùi như thế nào? Bạn không thể đi ra khỏi một ngôi nhà mà bạn không bao giờ đi vào bên phải. Trừ khi bạn lập trình thêm một scrollview có contentOffset đã được đặt thành nhiều hơn 0 thì mã của bạn xuất hiện. – pnizzle

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