UISwipeGestureRecognizerDirectionRight НЕ работает внутри DetailViewController.m с iOS 5.1 - PullRequest
2 голосов
/ 09 марта 2012

это мой первый вопрос, но я много пользуюсь этим сайтом в последние месяцы (спасибо за все).

Моя проблема: у меня есть проект с разделенным видом для i-Pad.В DetailViewController я использую UIButton.Вот код из DetailViewController.h:

@property (strong, nonatomic) IBOutlet UIButton *button;
- (void)swipeRightDetected:(UISwipeGestureRecognizer *)recognizer;

In DetailViewController.m Я просто делаю это:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self configureView];

    UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeRightDetected:)];
    swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
    [self.button addGestureRecognizer:swipeRight];
}

- (void)swipeRightDetected:(UISwipeGestureRecognizer *)recognizer
{

    if (recognizer.view == self.button) {
    NSLog(@"YEAH");
    }
}

Теперь проблемаэто: он прекрасно работал с iOS 5.0.1 и более ранними версиями.Теперь это больше не работает.Это работает для любого другого направления, но не для правого направления и только в DetailViewController!Это работает, только если вы ударили по iPad с силой и скоростью (как пощечина!), И то же самое для симулятора ... это работает, только если вы делаете удар очень, очень, очень быстро!

Я думаю, что этоошибка .. что мне делать?Может быть, опубликовать тот же вопрос на яблочном форуме?Спасибо вам всем, вы все великолепны!Marco

Ответы [ 2 ]

7 голосов
/ 09 марта 2012

Я полагаю, что это связано с новым «стилем скользящей презентации» контроллера разделения представления в iOS 5.1. В примечаниях к выпуску говорится, что вы можете отключить это поведение, установив presentsWithGesture в NO.

Другой вариант может заключаться в реализации gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: в делегате вашего распознавателя жестов.

1 голос
/ 13 июля 2012

Я явно копирую этот ответ из фантастического совета на этой странице StackOverflow: Приложение для мастер-таблицы

В вашем AppDelegate.m файле добавьте эту строку в конец вашей функции didFinishLaunchingWithOptions:

splitViewController.presentsWithGesture = false;

Внезапно, смахивание вправо снова работает на страницах Master-Detail.

(облегченно вздохнул)

...