UIActionSheet没有响应触摸

时间:2009-05-18 04:00:29

标签: iphone

我有一个我设置的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
{

}

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

仔细检查firstResponder状态。

答案 2 :(得分:0)

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

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

我在AppDelegate中有这个方法:

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

}