2012-04-02 32 views
7

Tôi có một UIScrollView với phân trang kích hoạt như sau:nội dung UIScrollView không cho phép người dùng tương tác

container = [[UIScrollView alloc] initWithFrame:kScrollViewFrame]; 
[container setDelegate:self]; 
[container setShowsHorizontalScrollIndicator:YES]; 
[container setShowsVerticalScrollIndicator:NO]; 
[container setClipsToBounds:YES]; 
[container setPagingEnabled:YES]; 
[container setDecelerationRate:UIScrollViewDecelerationRateFast]; 
[container setBounces:NO]; 
[container setUserInteractionEnabled:NO]; 
[container setCanCancelContentTouches:NO]; 
[container setDelaysContentTouches:NO]; 

Để UIScrollView, tôi thêm vài UIWebViews, và thiết lập sự tương tác của họ kích hoạt để có như vậy.

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 

     self.frame = frame; 
     self.userInteractionEnabled = YES; 
    } 
    return self; 
} 

làm hỏng phân trang và tất cả chạm trên UIScrollView. Nếu tôi đặt tương tác người dùng được bật thành KHÔNG, trang hoạt động, nhưng tôi không thể đánh dấu văn bản trong UIWebView. Tôi đã thử subclassing UIScrollView như sau, nhưng các trường hợp tương tự xảy ra. Bất kỳ ý tưởng?

- (id)initWithFrame:(CGRect)frame 
{ 
    NSLog(@"init"); 
    return [super initWithFrame:frame]; 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"touchesBegan"); 

    [[self nextResponder] touchesBegan:touches withEvent:event]; 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"touchesMoved"); 

    [[self nextResponder] touchesMoved:touches withEvent:event]; 
} 

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"touchesEnded"); 
    [[self nextResponder] touchesEnded:touches withEvent:event]; 
} 
+0

Bạn đang cố gắng đạt được điều gì, bạn có cần cuộn chế độ xem cuộn, cuộn trang web, phân trang, chọn không? Hãy cụ thể hơn. –

+0

Tôi cần chế độ xem cuộn đến trang và người dùng có thể chọn văn bản trên webvies (đó là các bản xem trước của scrollview) Webview không cần phải cuộn, chỉ có thể chọn văn bản của nó. –

+0

Tôi đã chỉnh sửa câu trả lời của mình để phản ánh yêu cầu của bạn, có vẻ như nó đang làm việc cho tôi. –

Trả lời

10

Vô hiệu tương tác người dùng trên vùng chứa cũng vô hiệu hóa hiệu quả trên các bản xem phụ. Bạn nên kích hoạt nó, gây ra sự kiện chạm để truyền bá phân cấp khung nhìn;

[container setUserInteractionEnabled:YES]; 

Nếu bạn muốn vô hiệu hóa di chuyển trên UIWebView chỉ nhận được bên trong của nó UIScrollView

yourWebView.scrollView.scrollEnabled = NO; 

Tôi đã thử nghiệm này trên điện thoại của tôi và tôi có thể vừa "trang thông qua" UIScrollView và chọn văn bản trên UIWebView.

EDIT:

Tôi đã làm việc này! Bạn cũng phải cho phép chạm chạm:

[container setCanCancelContentTouches:YES]; 
+0

Tôi đã thử điều này và nó phá vỡ sự tương tác của người dùng trên các trang web xem là con của scrollview. –

+0

Tôi đã thử điều này và tôi không thể cuộn nữa, thậm chí tho nội dung kích thước của uiscrollview là 10.000px và khung được đặt thành chiều rộng/chiều cao của màn hình (768 x 1024) Chỉnh sửa: Thực ra, nó hoạt động nếu tôi giữ trong vài giây và cố gắng vuốt. Rất khó để trang. Bạn có gặp sự cố này không? –

+0

Sử dụng trình nhận dạng vuốt và tự tạo phân trang. –

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