Mam wiele niestandardowych UIWebView jako subviews w UIScrollView. Zaimplementowałem metody dotykowe w UIViewController dla UIWebView, ale te metody nie są wywoływane.UIWebView w środku UIScrollView spożywających zdarzenia dotykowe
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { }
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { }
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { }
Przeczytałem gdzie indziej i mówi, że UIScrollView będzie zużywać zdarzenia. Ma to sens, ale czy UIWebView nie otrzyma zdarzenia dotyku przed samym UIScrollView? Prawdopodobnie dzieje się tak, że UIWebBrowserView (wyrób podglądu UIWebView) zużywa zdarzenia. Ta klasa nie może być jednak podklasowana, więc nie mogę wysłać zdarzeń w górę łańcucha widoków do UIScrollView. Czytałem w dokumentacji Apple iOS, że nigdy nie należy umieszczać UIWebView wewnątrz UIScrollView, ale muszę to zrobić dla moich celów.
Moje pytanie brzmi: w jaki sposób moje niestandardowe UIWebView (które są subviewsami UIScrollView) otrzymują zdarzenia dotykowe?
Moi kontrolery i widoki są skonfigurowane następująco:
HomeViewController.h /.m /.xib
HomeView.h /.m (is a UIScrollView)
DashboardViewController.h /.m /.xib (custom UIWebView's)
HomeViewController jest ładowany z pliku nib, który zawiera własny widok: HomeView. DashboardViewController jest ładowany z pliku Nib. Zawiera kilka etykiet, suwaków itp. (Zauważ, że nie ma tu niestandardowego widoku - nie podklasuję tutaj UIView).
HomeViewController dynamicznie ładuje kilka kontrolek DashboardViewController i dodaje swój widok do HomeView.
DashboardViewController *dashboardViewController = [[DashboardViewController alloc] initWithNibName:@"DashboardViewController" bundle:[NSBundle mainBundle];
[homeView addSubview:dashboardViewController.view];
Tak, delegat moich widoków jest podłączony do właściciela pliku. Co masz na myśli, wiążą mój widok z kontrolerem? Ponadto podłączyłem podklasę UIScrollView jako widok główny kontrolera. Zobacz mój zaktualizowany post; Dodałem więcej informacji, które mogą pomóc. Dzięki. – mdupls
To rozwiązanie nie działa, ponieważ UIWebBrowserView (nie UIWebView) wydaje się odbierać zdarzenia dotyku. Ta klasa jednak nie może być poddana subklasie w celu zmiany funkcjonalności. – mdupls