Скрыть UIActionSheet, когда пользователь нажимает на вид сверху в iPhone - PullRequest
2 голосов
/ 31 декабря 2011

Я хочу установить действие на листе действий таким образом, чтобы при нажатии пользователем на листе действий оно было отклонено.Я хочу этого, потому что я не хочу добавлять кнопку отмены в листе действий.Вместо кнопки отмены пользователь может отменить лист действий, нажав на вид зоны отдыха.Любое предложение, как это сделать в iPhone.Спасибо

Ответы [ 2 ]

8 голосов
/ 31 декабря 2011
// 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];
}

См. здесь .

Обратите внимание, это уже происходит на iPad.

1 голос
/ 31 декабря 2011
  1. Нажмите кнопку захвата в родительском представлении (через UITapGestureRecognizer) или в контроллере родительского представления (через переопределение touchesBegan: метода) в зависимости от вашей реализации.
  2. При необходимости захватить местоположение крана, используя метод [UITouch locationInView:] или [UITapGestureRecognizer locationInView:].
  3. (Если повернутое местоположение находится не слишком далеко от вашего листа действий), отклоните ваш лист действий, позвонив по номеру [UIAction dismissWithClickedButtonIndex:animated:].
...