2012-05-14 21 views
5

Tôi đang sử dụng mã này MBProgressHUD:MBProgressHUD khối tương tác với một UIScrollView khi thấy

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    hud.mode = MBProgressHUDModeText; 
    hud.removeFromSuperViewOnHide = YES; 
    [hud hide:YES afterDelay:1]; 

Đối với giai đoạn mà HUD đang được hiển thị tương tác với một UIScrollView (có chứa các nút này được gọi từ) là tàn tật. Tôi không thể nhấp vào các nút khác hoặc cuộn UIScrollview.

Tại sao MBProgressHUD chặn tương tác của tôi với UIScrollview và làm cách nào tôi có thể tắt tính năng này?

+0

MBProgressHUD được sử dụng khi bạn đang thực hiện các tác vụ mà bạn cần phải đợi. Nó cho rằng bạn không cần phải tương tác với bất cứ điều gì cho đến khi quá trình kết thúc. Dù sao, bạn đang bắn nhiệm vụ của bạn trên một sợi khác ?. MBProgressHUD phải nằm trong chuỗi chính và tác vụ bạn muốn chạy phải nằm trên một chuỗi khác. –

+0

Nó đơn giản hơn thế, tôi chỉ muốn hiển thị một thông báo ngắn khi một nút đã được khai thác. Nhưng mọi người có thể muốn chuyển đổi các nút trước khi hoạt ảnh biến mất. –

Trả lời

17

Tôi đang sử dụng phiên bản MBProgressHUD 0,5 và chỉ cần đặt:

HUD.userInteractionEnabled = NO; 

Với điều này cho phép người dùng tương tác theo quan điểm của cha mẹ.

0

có thể vì các nút nằm trong cùng một giao diện mà bạn đang cố gắng thêm chế độ xem tiến trình và khi chế độ xem tiến trình ở chế độ xem, chế độ xem này chặn chế độ xem các nút được thêm vào.

0

MBPregressHUD khối sự tương tác trong phương pháp dưới đây

-(void)show:(BOOL)animated{ 
    [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 
    ... 
    ... 
    ... 
} 

Dòng này của mã khối tất cả các tương tác bên trong ứng dụng của bạn. Nếu bạn muốn giữ sự tương tác, điều khiển nó thông qua một BOOL cấp lớp, bạn có thể gọi nó là isModal và quyết định xem bạn muốn chặn sự tương tác hay không

-(void)show:(BOOL)animated{ 
     if(isModal){ 
     [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 
     } 
     ... 
     ... 
     ... 
    } 

Lý tưởng nhất là bạn nên tạo một mới 'init' để lấy tham số BOOL này. Chữ ký có thể có thể là

- (id)initWithView:(UIView *)view isModal:(BOOL)modal; 

và sau đó khởi tạo BOOL cấp lớp bên trong phương thức này sau khi khởi tạo chế độ xem. Điều kiện tương tự sẽ được áp dụng trong phương pháp 'ẩn'.

Chúc mừng mã hóa ... :)

+1

Có lẽ đây là giải pháp khả thi cho vấn đề này, tuy nhiên tại thời điểm bài viết này, việc triển khai phương thức hiển thị của MBProgressHUD không còn gọi là 'beginIgnoringInteractionEvents' nữa, nhưng vẫn chặn giao diện người dùng. Tôi GUESS này là bởi vì MBProgressHUD là một phân lớp của UIView mà không thực hiện bất kỳ phương thức xử lý sự kiện nào (ví dụ: touchesBegan/Moved/Ended/Canceled), do đó phá vỡ chuỗi trả lời. – Tafkadasoh

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