Iphone UIActionSheet,如何通过一次单击来消除它?

Iphone UIActionSheet,如何通过一次单击来消除它?,iphone,objective-c,uiactionsheet,Iphone,Objective C,Uiactionsheet,UIActionSheet,如何通过一次单击来消除它? 我必须点击一个按钮两次,这样它就会被解除,我该怎么做才能在第一次点击后解除它?!这是我的密码: -(void)buttonHeld:(id)sender { UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle:@"Delete Contact?!" delegate:self cancelButtonTitle:@"Cancel" destructi

UIActionSheet,如何通过一次单击来消除它? 我必须点击一个按钮两次,这样它就会被解除,我该怎么做才能在第一次点击后解除它?!这是我的密码:

-(void)buttonHeld:(id)sender
{



    UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle:@"Delete Contact?!" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete" otherButtonTitles: nil];

    popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
    [popupQuery showInView:self.view];
    [popupQuery release];




}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {


  if (buttonIndex == 0) {

 NSLog(@"Delete button clicked Button Clicked");


    else if (buttonIndex == 1) {

   NSLog(@"Cancel Button Clicked");
   } 

}

当您分配操作表时,无需在此委托中声明,您有一个“取消”按钮,默认情况下,该按钮会关闭操作表,如下所示

[[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:btnTitle,@"Send for a date range",nil];
从任何其他事件中,您都可以使用此方法

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated

代码中有一个语法错误,您将else块放入if块中。

当您分配操作表时,无需在此委托中声明您有一个“取消”按钮,默认情况下,该按钮会关闭操作表,类似于

[[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:btnTitle,@"Send for a date range",nil];
从任何其他事件中,您都可以使用此方法

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated

在您的代码中,有一个语法错误,您将else块放入if块。

这就是我如何取消操作表的原因

  [actionSheet dismissWithClickedButtonIndex:0 animated:YES];

希望这能有所帮助

这就是我如何驳回行动单

  [actionSheet dismissWithClickedButtonIndex:0 animated:YES];

希望这对您有所帮助

基于您的方法“buttonHeld”的名称,我假设您正在尝试从UILongPressGestureRecognitor启动UIActionSheet。如果希望它按预期工作,则需要使用下面列出的代码。问题源于UILongPressGestureRecognitor是一种“连续手势”,它会多次触发并在几个不同的状态下进行。您需要监视正确的状态,然后加载UIActionSheet。我有完全相同的问题,这就是我解决它的原因

- (IBAction) buttonHeld:(UILongPressGestureRecognizer *)sender {
    if (sender.state == UIGestureRecognizerStateBegan) {
        UIActionSheet *popupQuery = [[UIActionSheet alloc] 
                                      initWithTitle:@"Delete Contact?!" 
                                           delegate:self 
                                  cancelButtonTitle:@"Cancel" 
                             destructiveButtonTitle:@"Delete" 
                                  otherButtonTitles:nil];

        popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
        [popupQuery showInView:self.view];
    }
}

基于方法“buttonHeld”的名称,我假设您正在尝试从UILongPressGestureRecognitor启动UIActionSheet。如果希望它按预期工作,则需要使用下面列出的代码。问题源于UILongPressGestureRecognitor是一种“连续手势”,它会多次触发并在几个不同的状态下进行。您需要监视正确的状态,然后加载UIActionSheet。我有完全相同的问题,这就是我解决它的原因

- (IBAction) buttonHeld:(UILongPressGestureRecognizer *)sender {
    if (sender.state == UIGestureRecognizerStateBegan) {
        UIActionSheet *popupQuery = [[UIActionSheet alloc] 
                                      initWithTitle:@"Delete Contact?!" 
                                           delegate:self 
                                  cancelButtonTitle:@"Cancel" 
                             destructiveButtonTitle:@"Delete" 
                                  otherButtonTitles:nil];

        popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
        [popupQuery showInView:self.view];
    }
}

我敲了几下才把它取消。问题在于我将它附加到了哪个视图

[action showInView:self.view];

self.view仅在IB中被引用。我将其更改为另一个视图,它工作了。

我点击了几下才将其取消。问题在于我将它附加到了哪个视图

[action showInView:self.view];

self.view仅在IB中被引用。我将其更改为另一个视图,它起到了作用。

如果您正在为iphone开发,则始终可以安全使用:

[popupQuery showFromBarButtonItem:发件人动画:是]


或showFromTabBar:或showFromToolBar等,而不是showinView。

如果您是为iphone开发的,则始终可以安全使用:

[popupQuery showFromBarButtonItem:发件人动画:是]


或showFromTabBar:或showFromToolBar等,而不是showinView。

你有没有想过这个问题?我也有同样的问题。当我第一次单击ActionSheet上的按钮时,它正在调用ActionSheet中的正确方法:ClickedButtonIndex:但是按钮不会高亮显示为蓝色,并且工作表也不会关闭。直到我第二次再次点击按钮,它才会突出显示然后消失。你有没有想过?我也有同样的问题。当我第一次单击ActionSheet上的按钮时,它正在调用ActionSheet中的正确方法:ClickedButtonIndex:但是按钮不会高亮显示为蓝色,并且工作表也不会关闭。直到我第二次点击按钮,它才会突出显示然后消失。我认为这也是正确的答案。我可以确认这为我解决了问题。我认为这也是正确的答案。我可以确认这为我解决了问题。