Khi trình bày từ một mục nút thanh, bạn thường muốn vô hiệu hóa tất cả các nút khác trên thanh công cụ của bạn cho đến khi tờ hành động sa thải.
Tôi nghĩ cách đơn giản nhất để thực hiện việc này là sửa đổi lớp UIToolbar. Bạn sẽ cần một cách để giữ các actionheet, có lẽ bằng cách lưu nó trong ứng dụng đại biểu.
Tạo một file UIToolbar + Modal.m, như thế này:
@implementation UIToolbar (Modal)
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *hitView = [super hitTest:point withEvent:event];
UIActionSheet *mySheet = [[[UIApplication sharedApplication] delegate] myActionSheet];
if ([mySheet isVisible]) return nil;
else return hitView;
}
@end
File .h không cần phải chứa bất cứ điều gì đặc biệt
@interface UIToolbar (Modal) {
}
@end
Bằng cách này, trước khi tìm giải pháp này Tôi đã thử gán một mảng trống cho passthroughViews, rằng bạn có thể truy cập như (ban đầu) được mô tả bởi stalinkay, nhưng điều này không thực sự làm việc (ngoài việc không có giấy tờ). Các cách khác để làm điều này tất cả đều có nhược điểm - hoặc là bạn phải xử lý các thay đổi định hướng, hoặc các nút trên thanh công cụ trông giống như chúng nhấn xuống khi thực tế hành động duy nhất được thực hiện là loại bỏ các actionheet.
CẬP NHẬT
Tính năng iOS 4.3 này không còn hoạt động nữa. Bạn cần phải phân lớp:
UIToolbarWithModal.h
#import <Foundation/Foundation.h>
@interface UIToolbarWithModal : UIToolbar {
}
@end
nhớ rằng khi bạn tạo ra các tấm hành động mà bạn cần để giữ cho nó dễ tiếp cận, có lẽ trong đại biểu ứng dụng của bạn - trong ví dụ này trong tài sản myActionSheet.
UIToolbarWithModal.m
#import "UIToolbarWithModal.h"
#import "MyDelegate.h"
@implementation UIToolbarWithModal
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *hitView = [super hitTest:point withEvent:event];
UIActionSheet *mySheet = [[[UIApplication sharedApplication] delegate] myActionSheet];
if ([mySheet isVisible]) return nil;
else return hitView;
}
@end
Sau đó, chỉ cần sử dụng UIToolbarWithModal trong mã của bạn, nơi bạn có thể đã sử dụng UIToolbar trước.
Điều đó có hiệu quả thông qua thay đổi định hướng không? Hay bạn cần điều chỉnh các sự kiện xoay vòng? Cảm ơn. – westsider