прикосновения начал игнорироваться в подклассе uiresponder - PullRequest
1 голос
/ 26 января 2012

работает над приложением ios с целью c и использует xcode.У меня есть класс, который наследует от другого класса, который наследует от UIResponder, и он содержит представление.У меня есть touchesBegan внутри подкласса, но событие вызывается только при запуске приложения в режиме отладки / разработки.когда я делаю сборку / выпуск, сенсорное событие не вызывается.

// Basic viewcontroller protocol
@protocol SubViewController
    - (void)viewDidAppear:(BOOL)animated;
    - (void)viewDidDisappear:(BOOL)animated;
    - (void)viewWillAppear:(BOOL)animated;
    - (void)viewWillDisappear:(BOOL)animated;
    - (void)viewDidLoad;
    -(UIView *)view;
@end


@interface SubViewController : UIResponder<SubViewController> {
}

/////////////////////////////////////////////////////////////////////////////////


// A custom subview controller
//

@interface mySubViewController : SubViewController {

}

и в классе mysubviewcontroller у меня есть

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
   //some code and magic
}

Теперь, как я уже сказал, запуск в отладке - это нормальноно событие касания игнорируется в релизе.любые советы, идеи или вопросы, которые помогут уточнить это для вас, пожалуйста, скажитезаранее спасибо

edit: я видел это в документе "Если вы переопределяете этот метод без вызова super (шаблон общего пользования), вы также должны переопределить другие методы для обработки сенсорных событий, если только как заглушка (empy) реализации ".так что я заглушил все остальные сенсорные события, но без изменений при сборке релиза

1 Ответ

0 голосов
/ 26 января 2012

Поскольку вы не создаете подклассы UIViewController (что делает это автоматически), вам необходимо вручную добавить респондента в цепочку респондента.

Позиция UIViewController в цепочке респондента находится между его представлением и суперпредставлением представления, поэтому, чтобы получить то же самое поведение, вам нужно переопределить nextResponder как в вашем представлении, так и в контроллере, который им управляет. Представление должно возвращать контроллер, а контроллер должен возвращать суперпредставление представления.

...