按取消按钮不会缩回

Posted

技术标签:

【中文标题】按取消按钮不会缩回【英文标题】:Pressing Cancel button doesn't retract 【发布时间】:2010-08-23 07:59:29 【问题描述】:

我正在实施一个行动表。当我按“确定”按钮时,执行这些操作,按“取消”返回。 “确定”按钮工作正常,但是当我按下“取消”按钮时,什么也没有发生,它不会缩回或做任何事情,只是挂在操作表视图上。

下面是我的代码:

在导航栏上创建按钮:

UIBarButtonItem *clearButton = [[[UIBarButtonItem alloc] initWithTitle:@"Clear     History"
                                                                      style:UIBarButtonItemStyleBordered
                                                              target:self
                                                              action:@selector(ClearHistoryAction:)] autorelease];
self.navigationItem.leftBarButtonItem = clearButton;

当我单击并启动操作表时:

   - (IBAction)ClearHistoryAction:(id)sender
  
UIActionSheet *actionSheet = [[UIActionSheet alloc]
                              initWithTitle:@"Clear History?"
                              delegate:self
                              cancelButtonTitle:@"Cancel"
                              destructiveButtonTitle:@"OK"
                              otherButtonTitles:nil];


// use the same style as the nav bar
actionSheet.actionSheetStyle = self.navigationController.navigationBar.barStyle;    

[actionSheet showInView:self.view];
    [actionSheet release];


    

如果选择确定,请执行以下操作:

  - (void)actionSheet:(UIActionSheet *)actionSheet

 didDismissWithButtonIndex:(NSInteger) buttonIndex
  
if (!buttonIndex == [actionSheet cancelButtonIndex])


    //do what i want here!

  

在头文件中,UIActionSheetDelegate包含在@interface中。

【问题讨论】:

【参考方案1】:

迟到了,但可能的解释是:

似乎是标签栏的问题。如果调用 UIActionSheet 的

[sheet showInView:self.view]

从作为 UITabViewController 子级的视图控制器,然后 取消按钮的命中测试在该部分失败 位于标签栏视图上方的 UIActionSheet。

如果您改为传入 UITabBarController 的视图,则 UIActionSheet 会按预期运行。

[sheet showInView:self.parentViewController.tabBarController.view];

这里有更详细的解释: UIActionSheet cancel button strange behaviour

【讨论】:

【参考方案2】:

我不知道它是否能解决这个问题,但你会想做buttonIndex != [actionSheet cancelButtonIndex](检查不等于)而不是!buttonIndex == [actionSheet cancelButtonIndex](反转buttonIndex(!)并检查是否相等) .

【讨论】:

【参考方案3】:

您需要使用 showFromBarButtonItem 而不是 showInView。问题是取消按钮被另一个视图覆盖——可能是工具栏或标签栏——所以它没有得到你认为它应该得到的触摸事件。还有有时应该使用的 showFromTabBar 和 showFromToolbar(参见 UIActionSheet 类参考)。

【讨论】:

以上是关于按取消按钮不会缩回的主要内容,如果未能解决你的问题,请参考以下文章

取消选中按钮按下复选框而不重置表单

如何从对话框中取消文件下载

Angular 2 表单验证器弄乱了取消按钮

了解用户在应用内购买期间何时按下了取消按钮

UIToolbar 中的 UISearchBar 不会显示取消按钮

如果按下子视图的按钮,如何取消 UIGestureRecognizer