2009-05-18 103 views
4

我有一个UIActionSheet我建立这样的:UIActionSheet不响应触摸

-(void)trash:(id)sender 
{ 
UIActionSheet *sheet = [[[UIActionSheet alloc] initWithTitle:@"Delete" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Remove text" otherButtonTitles:@"Remove tags", nil] autorelease]; 

[sheet showInView:self.view]; 

}

的片材从屏幕的底部,如预期,和正确的显示。但是没有任何按钮处于活动状态。唯一的出路是触摸主页按钮。

有什么我失踪?

视图self.view是视图控制器的视图。唯一奇怪的是,它低于全屏高度,因为它位于键盘之上。

// Never called 
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex; 
{ 
    NSLog(@"%d",buttonIndex); 
} 

// Never called 
- (void)actionSheet:(UIActionSheet *)actionSheet  didDismissWithButtonIndex:(NSInteger)buttonInde 
{ 

} 

// Never called 
- (void)actionSheet:(UIActionSheet *)actionSheet  willDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 

} 

// Called if I hit Home button 
- (void)actionSheetCancel:(UIActionSheet *)actionSheet 
{ 

} 


// Called second 
- (void)didPresentActionSheet:(UIActionSheet *)actionSheet 
{ 

} 

// Called first 
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet 
{ 

} 
+2

有趣的是,如果我这样做: [片showInView:self.view.window]; 它完美的作品。 – 2009-05-18 04:15:39

回答

0

仔细检查firstResponder状态。

1

如果视图上有键盘,则键盘可见的文本框/文本视图可能是第一个响应者。对于任何控制来响应触摸,它必须是第一响应者。

确保您的操作表是您显示时的第一响应者。

0

您需要显示您的视图不是在self.vew中,而是在Appdelegate的根视图中。

使用[appDelegate.window.subviews objectAtIndex:0];

我在AppDelegate中此方法:

-(UIView *) getRootView { 
return [self.window.subviews objectAtIndex:0]; 

}