Кнопка SFSafariViewController Done не работает / сенсорная область слишком мала

Я представляю ссылку в SFSafariViewController следующим образом:

SFSafariViewController *sfvc = [[SFSafariViewController alloc] initWithURL:myurl];
sfvc.preferredControlTintColor=[UIColor blackColor];
sfvc.delegate = self;
[self.navigationController pushViewController:sfvc animated:YES];

Я добавил делегата SFSafariViewControllerDelegate и метод:

- (void)safariViewControllerDidFinish:(SFSafariViewController *)controller{
    NSLog(@"safariViewControllerDidFinish");
    [self.navigationController popViewControllerAnimated:YES];
}

Однако, когда я нажимаю кнопку «Готово», она часто не работает. Особенно с левой рукой, это никогда не работает. Однако, когда я нажимаю правой рукой под определенным углом, это работает. Похоже, это указывает на то, что сенсорная область для кнопки «Готово» слишком мала.

Если я использую свайп от левого края, то это работает.


person sudoExclaimationExclaimation    schedule 26.05.2017    source источник


Ответы (1)


Я понял. Я использовал «Иерархию представления отладки» XCode и заметил, что левая сторона всего SFSafariViewController перекрывалась представлением обнаружения левого края UINavigationController и вторым представлением обнаружения левого края. Возможно, SFSafariViewController поставляется с собственным представлением обнаружения смахивания по левому краю. Второй вид перекрывал сенсорную область кнопки «Готово».

введите здесь описание изображения

Затем я где-то прочитал, что SFSafariViewController должен быть представлен только с использованием presentViewController.

Поэтому я удалил метод делегата и вместо этого использовал это:

SFSafariViewController *sfvc = [[SFSafariViewController alloc] initWithURL:myurl];
sfvc.preferredControlTintColor=[UIColor blackColor];
[self presentViewController:sfvc animated:YES completion:nil];

Это работает отлично. Удивительно, но при таком представлении смахивание от левого края по-прежнему работает нормально. Просматривая «Иерархию представления отладки» XCode, я замечаю только одно представление обнаружения левого края:

введите здесь описание изображения

person sudoExclaimationExclaimation    schedule 26.05.2017