5

Ok, vì vậy những gì tôi đang cố gắng làm là tạo ra một Viewer tài liệu tương tự như hình ảnh này: enter image description hereTuỳ chỉnh QLPreviewController hoặc UIDocumentInteractionController có thể đánh chặn các sự kiện liên lạc

Về cơ bản những gì nên xảy ra là, khi màn hình được khai thác ở bất cứ đâu , thanh trên cùng và dưới cùng sẽ xuất hiện. Nhấn lại và chúng biến mất.

Tôi đã phân loại QLPreviewController và đã quản lý để tận dụng thanh điều hướng (trên cùng) đã đi kèm với QLPreviewController. Điều này hoạt động tốt. Bây giờ tôi cần phải nhận được thanh dưới cùng để hiển thị bất cứ khi nào thanh trên cùng được hiển thị. Tôi có thể thêm UIToolbar vào cuối trang, nhưng tôi cần chặn các sự kiện chạm để tôi có thể ẩn/bỏ ẩn thanh dưới cùng. Tôi dường như không thể tìm ra cách để nó hoạt động. Tôi đã thử thêm UITapGestureRecognizer vào chế độ xem của chính lớp con QLPreviewController để không may mắn. Tôi cũng đã thử tạo lớp phủ UIView có một số UITapGestureRecognizer nhưng điều đó ngăn cản biểu mẫu người dùng tương tác với tài liệu bên dưới.

Bất kỳ ai có ý tưởng nào về cách thực hiện việc này? Cảm ơn trước!

Trả lời

3

Ok, tôi đã tìm ra sự cố xảy ra với số UITapGestureRecognizer. Bạn cần phải thiết lập các đại biểu tự, và sau đó ghi đè lên

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

chức năng và trở vâng. Vì vậy, trong lớp con QLPreviewController của tôi, tôi thực hiện các UIGestureRecognizerDelegate, và trong viewWillAppear:

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(documentTapped:)]; 
tapGesture.cancelsTouchesInView = NO; 
tapGesture.delegate = self; 
[self.view addGestureRecognizer:[tapGesture autorelease]]; 

Sau đó chỉ cần:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 
    return YES; 
} 

Bằng cách này, QLPreviewController vẫn sẽ nhận được tất cả những sự kiện liên lạc không nhấn khác để mà người dùng vẫn có thể tương tác với các tài liệu

0

Subclass QLPreviewController và sau đó ghi đè

-(void)contentWasTappedInPreviewContentController:(id)item {} 

Đúng vậy!

+0

Rất tiếc, đây không phải là giải pháp có giá trị vì Apple coi đó là một API riêng tư. xem http://stackoverflow.com/questions/6091027/qlpreviewcontrollers-view#comment34156919_22231721 – Lifely

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