当我在 ios 中点击视图时如何关闭 tableviewcell 中的操作表

Posted

技术标签:

【中文标题】当我在 ios 中点击视图时如何关闭 tableviewcell 中的操作表【英文标题】:How to dismiss the actionsheet in tableviewcell when i tap on the view in ios 【发布时间】:2016-04-29 11:47:03 【问题描述】:

这是我的代码。我对 Xcode 非常陌生。当我点击 tableview 单元格时,我正在获取 UIActionSheet。要关闭 UIActionSheet,我使用了 UITapGestureRecognizer。它不适合我。

    - (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    UITableViewCell *cell = [aTableView cellForRowAtIndexPath:indexPath];
    UILabel *lbl = (UILabel *)[cell.contentView viewWithTag:2];
    NSLog(@"cell text label =%@",lbl.text);
    _StoreNameobj = lbl.text;


    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Store Maintenance Action"
                                                             delegate:self
                                                    cancelButtonTitle:cancelTitle
                                               destructiveButtonTitle:nil
                                                    otherButtonTitles:@"Show Store Details",@"Navigate to Store",@"Edit Store Nickname",@"Delete Store", nil];


    actionSheet.userInteractionEnabled = YES;

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOut:)];
    [lbl addGestureRecognizer:tapGesture];
    [cell.contentView addSubview:lbl];


    - (void)tapOut
    //dismiss the action sheet here
    [actionSheet removeFromSuperview];

任何帮助都是可观的。在此先感谢!

【问题讨论】:

为什么不能使用didSelectRowUIButton 关闭 无需在操作表上进行点击手势。它的默认行为是点击关闭它。 如何使用 didSelectRow 关闭 ActionSheet @Shubhank 尝试来聊天chat.***.com/rooms/26424/iosandroidchaosoverflow 【参考方案1】:

我认为您不需要手动删除操作表。默认情况下,actionsheet 会在点击时退出。我认为没有必要采取制表手势。

显示类似的操作表,

[actionSheet showInView:self.view];

所以当你点击任何按钮时它会自动关闭

【讨论】:

【参考方案2】:

要在 UITableViewCell 上查看 UIActionSheet 应用此代码

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    UIActionSheet *popup = [[UIActionSheet alloc] initWithTitle:@"Your Title:" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:
                        @"button title1", nil];

  [popup show];

添加点击手势

    - (void)viewDidLoad 
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        UITapGestureRecognizer *tapp = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(HideActionSheet:)];

        [tapp setNumberOfTapsRequired:1];
        tapp.cancelsTouchesInView = NO;
        [self.view.window tapp];
        [tapp release];

HideActionSheet 代码:

- (void) HideActionSheet:(UITapGestureRecognizer *)sender

    if (sender.state == UIGestureRecognizerStateEnded)
      
       CGPoint location = [sender locationInView:nil];  
        if (![self.view pointInside:[self.view convertPoint:location fromView:self.view.window] withEvent:nil]) 
        
          [self.view.window removeGestureRecognizer:sender];
          [self dismissModalViewControllerAnimated:YES];
        
     

【讨论】:

我应该在 didSelectRowAtIndexPath 或 cellForRowAtIndexpath 表格视图方法@Pratap 中实现上述代码 检查更新的答案在 ViewDidLoad 中创建 Tapgesture 点击tableview单元格@Pratap时我需要Actionsheet 请再检查一遍 不添加取消标题我需要关闭 ActionSheet @pratap

以上是关于当我在 ios 中点击视图时如何关闭 tableviewcell 中的操作表的主要内容,如果未能解决你的问题,请参考以下文章

当我在我的应用程序中录制完整的音频时,如何在其他 iOS 应用程序中继续播放音乐? [关闭]

当我点击导航栏时,来自栏按钮的 ios 操作表不会关闭

文本字段点击正在关闭 SwiftUI 中的导航链接

按主页按钮时视图消失

iOS - 如何将选项卡与情节提要中的特定视图控制器链接?

iAD 视图在广告关闭时冻结