Пользовательское меню UIWebView UIActionSheet при длительном нажатии на ссылку

Я реализую пользовательское меню при длительном нажатии на ссылку в UIWebView.

Чтобы предотвратить меню iOS по умолчанию, я использую:

-webkit-touch-callout:'none'

Все работает нормально в iOS 6, 7: вместо UIWebView по умолчанию отображается мое пользовательское меню. Но в iOS 8 происходит странное поведение.

В iOS 8 после отображения моего собственного меню я отпускаю касание, и ссылка загружается в UIWebView.

Я создаю подкласс UIWindow, переопределяю sendEvent: и вижу другое:

  • В iOS 6, 7: после того, как мое собственное меню было показано, было отправлено touchcancel.

  • В iOS 8: ничего не происходит. Но когда я отпускаю касание, было отправлено касание и щелкнуть ссылку.

Я попытался вызвать touchcancel из javascript, когда мое меню начинает отображаться, но не повезло.

Есть ли обходной путь для этой ситуации?


person lambao    schedule 15.04.2015    source источник
comment
попробуйте это: github.com/theniceboy/HoldToSaveImage   -  person David    schedule 18.11.2015
comment
Дэвид, я попробовал ваш проект и долго нажимал на желтый рюкзак, как указано в файле readme, но мне не повезло увидеть настроенное предупреждающее сообщение.   -  person Yuichi Kato    schedule 24.11.2015


Ответы (1)


Для тех, кто может быть обеспокоен в будущем, мне удалось преодолеть эту ситуацию с помощью хитрого взлома:

CGPoint currentOffset = webview.scrollView.contentOffset;
[webview.scrollView setContentOffset:CGPointMake(currentOffset.x, currentOffset.y +1) animated:NO];
[webview.scrollView setContentOffset:currentOffset animated:NO];
person lambao    schedule 18.04.2015
comment
Из множества подходов, позволяющих предотвратить касание при замене жеста длительного нажатия, работает только этот. - person jasonjwwilliams; 06.01.2017