当用户点击iPhone中的上方视图时隐藏UIActionSheet

时间:2011-12-30 20:28:37

标签: iphone ios xcode uiactionsheet

我想在操作表上设置操作,以便当用户点击操作表的上方时,它会被解雇。
我想这样做因为我不想在操作表中添加取消按钮。用户可以通过点击休息区视图取消操作表,而不是取消按钮。
有任何建议如何在iPhone中执行此操作。
谢谢

2 个答案:

答案 0 :(得分:8)

// For detecting taps outside of the alert view
-(void)tapOut:(UIGestureRecognizer *)gestureRecognizer
{
    CGPoint p = [gestureRecognizer locationInView:self];
    if (p.y < 0)
    {   // They tapped outside
        [self dismissWithClickedButtonIndex:0 animated:YES];
    }
}

-(void) showFromTabBar:(UITabBar *)view
{
    [super showFromTabBar:view];

    // Capture taps outside the bounds of this alert view
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOut:)];
    tap.cancelsTouchesInView = NO; // So that legit taps on the table bubble up to the tableview
    [self.superview addGestureRecognizer:tap];
    [tap release];
}

请参阅here

请注意,这已经发生在iPad上。

答案 1 :(得分:1)

  1. 根据您的实施,在父视图中捕获点击按钮(通过UITapGestureRecognizer)或在父视图控制器上(通过覆盖touchesBegan:方法)。
  2. 如有必要,使用[UITouch locationInView:][UITapGestureRecognizer locationInView:]方法捕捉点按的位置。
  3. (如果点击的位置距离您的操作表不太远),请致电[UIAction dismissWithClickedButtonIndex:animated:]以解除您的操作表。