2013-06-07 1 views
0

Итак, у меня есть 2 Scrollviews внутри scrollview, который заполняет весь ViewController.Цель c - Несколько scrollviews внутри scrollview

enter image description here

поэтому первый С.В. прокручивается без проблемы, contentSize для 2 к югу SV устанавливается.

unfortnatly Я думаю, что это должно быть что-то с Autolayout ... Его включение, и если я отключу его, то SV не прокрутит, а sub SVs.

любая идея, как ее решить?

+0

Вы хотите сказать, что внутренние прокрутки не прокручиваются ?. Вы передали событие касания следующему ответчику ?. – Vignesh

+0

Да правильно! Как передать его следующему ответчику? – SaifDeen

ответ

0

Обычно scrollview ест все события касания. Следовательно, subviews scrollview не получают сенсорных событий. Чтобы включить события касания в подзонах, вы можете передать сенсорное событие следующему ответчику из вида прокрутки.

Вы можете сделать это с помощью метода touch touch в подклассе scrollview. Подробное объяснение с примером можно найти here.

+0

Я проверю, как только я дома! – SaifDeen

+0

Мне жаль, но я действительно не понимаю пример ... его использование costum VC, который предлагает я не понимаю .. – SaifDeen

2

Попробуйте переопределить hitTest:withEvent: в обычном ScrollView подклассе. Следующий код должен заставить внутренний UIScollView обрабатывать все касания на нем.

@interface MyCustomScrollView : UIScrollView 
@end 

@implementation MyCustomScrollView 
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    UIView* handler = nil; 
    if ([self pointInside:point withEvent:event]) { 
     for (UIView* view in self.subviews) { 
      if ([view isKindOfClass:[UIScrollView class]]) { 
       CGPoint subPoint = [self convertPoint:point toView:view]; 
       handler = [view hitTest:subPoint withEvent:event]; 
       if (handler) { 
        break; 
       } 
      } 
     } 

     if (nil == handler) { 
      handler = [super hitTest:point withEvent:event]; 
     } 
    } 
    return handler; 
} 
@end 

Примечание: прокручиваемые подрайоны внутри прокручиваемой области создают плохую работу пользователя. Рассмотрим изменение размеров внутренних прокруток, чтобы они соответствовали их контенту.

+0

Дополнительное примечание о реализации. Согласно документации, вы должны проверить 'pointInside: withEvent:' на подвью, прежде чем задавать его для 'hitTest: withEvent:'. Но это не так. Система всегда вызывает только «hitTest: withEvent:» в представлении, и это зависит от вида, чтобы проверить, есть ли в нем точки касания. – mekarthedev

+0

ty, плохо попробуйте это после работы .. Я также думал об аутсорсинге внутреннего scrollviews .. Я думаю об этом .. Я отвечу как можно скорее !! – SaifDeen

+0

Я пробовал этот код сейчас .. itdidnt сработал:/Я установил его сначала на sub SVs и после него на внешний SV .. ничего: S Ill передал вспомогательные SV. Но если вы получите другое, просто скажите – SaifDeen