Для тех, кто может работать на уровне HTML, решение JavaScript - это лучший способ (извлеките часть JavaScript здесь [1]).
Для разработчиков, которые не могут изменять HTML-страницы, решение [1] будет работать для 99% клиентов и действительно чисто и безопасно.
Однако для случаев, когда всплывающее окно, которое появляется, когда вы долго нажимаете на ссылку или копируете и вставляете или увеличительное стекло и т. Д., Просто должно никогда , тогда вот оно, мое рабочее решение. (случаи, когда JavaScript-инъекция завершается неудачно, это случаи, когда страницы загружаются немного, а пользователь тем временем нажимает на ссылку).
Чтобы решить эту проблему, просто вставьте эту реализацию протокола практически в любое место вашего кода (не ленитесь ... создайте новый файл категории). Пожалуйста, имейте в виду, что это решение опасно, по крайней мере теоретически, в реальной жизни (то есть с iOS 6.0.2), оно не опасно. Пожалуйста, знайте, к каким категориям относится данное решение.
@implementation UIScrollView (CustomGestureCollisionHandling)
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
for(UIView *aView in gestureRecognizer.view.subviews)
{
for (UIGestureRecognizer *gestRec in aView.gestureRecognizers)
{
if (!gestRec.enabled)
{
continue;
}
if ([[NSString stringWithFormat:@"%@",[gestRec class]] isEqualToString:@"UITapAndAHalfRecognizer"])
{
gestRec.enabled = NO;
}
}
}
if ([otherGestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
{
otherGestureRecognizer.enabled = NO;
}
return NO;
}
@end
[1] https://stackoverflow.com/a/5548362/428143