2010-12-15 8 views
24

Tôi đã sử dụng bảng tác vụ trong dự án của mình và khi nó xuất hiện hiển thị tất cả các nút nhưng nút cuối cùng (4) không phản hồi nhấp chuột của tôi (chỉ có một phần là một phần phản hồi) ..Nút cuối cùng của bảng tác vụ không được nhấp vào

Tôi biết lý do vì tôi đã sử dụng một TabBarController và lớp hiện tại nằm bên trong bộ điều khiển thanh tab đó .... chỉ một phần của bảng tác vụ phản hồi nằm phía trên các tab .... và nút cuối cùng của tôi là một nửa ở trên và một nửa ở trên cùng của tabbar

hãy giúp

+0

Xin vui lòng gửi một số mã của bạn, sau đó một cách dễ dàng, chúng tôi có thể giúp bạn giải quyết nó. – jfalexvijay

+0

Bạn không thể sử dụng bất kỳ phương thức showFromTabBar nào, nếu bạn đang sử dụng một số thanh tab tùy chỉnh. stackr nói với các cược trả lời! –

+0

@ WinDMak3r - Vâng tôi biết và đó là lý do tại sao anh ta có 32 phiếu bầu :) – Saawan

Trả lời

83

tôi đề nghị sử dụng này:

[actionSheet showInView:[UIApplication sharedApplication].keyWindow]; 

tôi đã cùng một vấn đề mà bạn có và sử dụng phương pháp này để hiển thị nó làm việc cho tôi. TabBar muốn giữ phím cửa sổ những gì làm cho nút dưới cùng của bạn xuất hiện ở trên, nhưng thực sự là dưới thanh tabbar.

Hope này hiện các trick cho bạn ..

Sửa

Nếu bạn sử dụng chế độ nằm ngang và phương pháp trên không hoạt động. Bạn có thể sử dụng việc sửa chữa như sau:

@Vinh Trần: [tấm showFromTabBar: self.parentViewController.tabBarController.tabBar]

+0

+1 --Nó làm việc nhờ ... – Saawan

+0

Đã làm việc tuyệt vời! Thanx – Ladislav

+0

Hoạt động Rất cám ơn – pa12

3

Bạn sử dụng phương pháp nào để hiển thị acti của bạn onsheet. Hãy thử phương pháp showFromTabBar:

+0

Tôi đã sử dụng -------- \t UIActionSheet * actionsheet = [[UIActionSheet alloc] initWithTitle: @ "Chọn loại nguồn cấp dữ liệu" đại biểu: tự cancelButtonTitle: nil destructiveButtonTitle: nil otherButtonTitles: @ "first", @ "2nd", @ "3rd", @ "4th", nil]; \t [actionsheet showInView: self.view]; \t [releaseheet release]; – Saawan

+0

thử sử dụng phương pháp tôi đã đề xuất thay vì showInView :. như tôi hiểu nó được thiết kế để xử lý chính xác trường hợp của bạn (đã không sử dụng nó bản thân mình mặc dù ...) – Vladimir

+0

theo đề nghị của bạn tôi sử dụng phương pháp sau đây ...... [actionsheet showFromTabBar: delegate.tabC.tabBar]; ... trong đó đại biểu là đối tượng của lớp đại biểu của tôi ở đâu là tabbarController tabC ............... Nhưng chương trình của tôi ĐÃ MẶT ... – Saawan

0

Vấn đề thực sự đến, khi giao diện của bạn xoay ngang và bộ điều khiển xem mẹ có một sự biến đổi trên nó. Hãy tin tôi, đó là một kịch bản thực tế, doh. Sau đó, bảng hành động được cắt bớt và bạn không thể sử dụng parentViewController vì nó được chuyển đổi. Giải pháp để tránh tất cả những vấn đề này là tạo một cửa sổ mới, thêm một bộ điều khiển dạng xem xoay như rootViewController và sử dụng khung nhìn của nó để hiển thị trang tính.

CGRect applicationRect = [[UIScreen mainScreen] bounds]; 
UIWindow* actionSheetWindow = [[UIWindow alloc] initWithFrame:applicationRect]; 
RotationViewController* rootViewController = [[RotationViewController alloc] initWithNibName:nil bundle:nil]; 
actionSheetWindow.rootViewController = rootViewController; 
[rootViewController release]; 
actionSheetWindow.hidden = NO; 

UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:nil]; 
[actionSheet setCancelButtonWithTitle:@"Cancel" handler:^{ 
    actionSheetWindow.hidden = YES; 
    [actionSheetWindow release]; 
}]; 

[actionSheet showInView:rootViewController.view]; 

Đoạn mã trên sử dụng BlocksKit, nhưng bạn cũng có thể làm điều đó bằng cách sử dụng thuộc tính instance và ủy quyền actionSheet.

RotationViewController chỉ là một lớp con UIViewController mà thực hiện

- (void) viewDidLoad { 
    [super viewDidLoad]; 
    self.view.backgroundColor = [UIColor clearColor]; 
    self.view.opaque = NO; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return YES; 
}