Вы должны иметь возможность наследовать UIWebView и переопределять эти методы. Возможно, вам придется переопределить все сенсорные методы,
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
EDIT:
Ах, я вижу твои ошибки сейчас. Это потому, что эти вещи не относятся к UIWebView, как они применили к родителю (что вы уже знаете ...)
Поскольку UIWebView является UIView, вы должны иметь возможность заменить
[touch locationInView:self.view]
с
[touch locationInView:self]
Чтобы добраться до контроллера панели вкладок родителя, вам придется придумать другой способ сделать это. Вы можете передать ссылку на родителя в свой подкласс UIWebView и предоставить метод для родителя для изменения активной вкладки, например:
В своем подклассе добавьте свойство для родительского контроллера панели вкладок:
UITabBarController *parent;
При создании подкласса UIWebView и добавлении его в контроллер панели вкладок также установите родительский элемент:
webView.parent = self;
Если вы настраиваете это в Интерфейсном Разработчике, сделайте родительский объект IBOutlet и подключите его через IB.
В представлении контроллера панели вкладок добавьте метод, который изменяет выбранный контроллер. Вы можете использовать именованные константы для представления, на которое вы хотите переключиться, или методы, которые точно описывают то, на что вы переключаетесь, но для простоты вы бы сделали нечто концептуально похожее на это:
- (void) switchToView: (int)viewNumber
{
self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:viewNumber];
}
, затем наберите [parent switchToView:2]
в своем коде.
Другой, возможно, лучший способ - использовать NSNotification s, регистрируя родителя в качестве слушателя.