Robię niektóre niestandardowe rysowanie UITableViewCell, które mam podklasy. Tam jest kontrolka OpenGL ES 2.0, która wymaga interakcji z użytkownikiem, aby działać ... teraz, jeśli zacznę przeciągać poziomo, kontrolka reaguje, ale gdy tylko pójdę w kierunku pionowym, zacznie przesuwać widok tabeli. Jak zatrzymać tę interakcję przed przechodzeniem do UITableView i ograniczyć ją do własnego UIView w UITableViewCell?

0
ExtremeCoder 5 sierpień 2011, 14:13

2 odpowiedzi

Najlepsza odpowiedź

Możesz spróbować podklasy UITableView i zastąpić następujące metody

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {  
    UITouch *touch = [touches anyObject];

    // if user tapped on your custom view, disable scroll        
        self.scrollEnabled = NO;
    // end if

    [super touchesBegan:touches withEvent:event];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    self.scrollEnabled = YES;
    [super touchesEnded:touches withEvent:event];
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    self.scrollEnabled = YES;   
    [super touchesCancelled:touches withEvent:event];
}
1
Evgeny Shurakov 7 sierpień 2011, 17:43

Nie sądzę, że możesz zapobiec interakcji użytkownika w UITableView, ponieważ wpłynęłoby to na wszystkie podwidoki.
Spróbuję wysłać interakcję UITableView do metody, która ma z niej korzystać.

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
   [MyClass myScrollDidStartMethod]; 
}

Lub użyj - (void)scrollViewDidScroll:(UIScrollView *)sender, aby móc pracować nad przesunięciem treści nadawcy, aby uzyskać kierunek przewijania (patrz tego posta, aby uzyskać więcej informacji na ten temat)

1
Community 23 maj 2017, 13:34
Dziękuję. Brak konieczności tworzenia podklas.
 – 
Steve Moser
19 grudzień 2011, 19:37