2010-09-08 6 views

ответ

10

hitTest:withEvent: метод объявлен в классе UIView, поэтому вы не можете напрямую его использовать в подклассах UIViewController.

Но другие методы сенсорного слежения, такие как touchesBegan:withEvent: и т.д. объявлены в UIResponder и поэтому может быть реализован как в UIView и UIViewController подклассов

3

Вы всегда можете определить конкретный делегат для обработки Трассировки соответствующей информации. В файле hitTest:withEvent: в файле .m (реализация) класса UIView вызывается метод делегата, передавая всю вашу соответствующую информацию делегату для обработки. Объявите свой класс ViewController для реализации делегата, как это:

@implementation MyViewController: UIViewController <HitTestDelegate> 

Таким образом, фактическая реализация логики следующего кране пользователя будет в классе MyViewController.

5

Возможно, альтернативным решением является просто подкласс UIView, а в вашей функции инициализации контроллера представления назначить представление контроллеров представлений этому UIView.

Например. NavPanelViewController.m

- (id)init 

    theView = [[NavPanelView alloc]init]; // declare theView in your header and in dealloc release 
    self.view = theView; 

Затем вы можете переопределить метод pointInside в подклассе.

+1

Я не знаю, почему ваш ответ не является приемлемым, поскольку он является единственным, кто действительно отвечает на вопрос. – SpaceDog

+4

Лучшей практикой было бы установить пользовательский UIView в '-loadView'. Причина заключается в том, чтобы избежать преждевременной загрузки представления. – jonsibley

Смежные вопросы