Сенсорные методы не работают с выпуском сборки - PullRequest
1 голос
/ 21 апреля 2009

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

Основное представление оболочки является подклассом UIView и содержит ряд «кнопок», которые добавляются как подпредставления. Пользовательский класс кнопок расширяет UIImageView и переопределяет сенсорные методы следующими сигнатурами:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

При сборке кода отладки все 4 из этих функций вызываются в то время, которое вы ожидаете, при сборке релиза ничего не происходит. У меня есть вход в каждый из них, и я не получаю никаких сообщений журнала (другие журналы работают).

Еще одна интересная вещь: у меня есть методы touchesBegan / Moved / Ended, переопределенные в классе представления оболочки, и они работают нормально. Я попытался закомментировать эти методы в классе-обертке, чтобы увидеть, как они влияют на кнопки, но это не так.

Я также попытался изменить класс UIImageView на подкласс UIButton, но у меня возникла та же проблема, включая любые события, такие как touchUpInside. Они работают в режиме отладки, но не в версии.

Я пытался исследовать эту проблему, а также общую обработку событий, и пришел с пустыми руками. Есть идеи, где искать дальше?

1 Ответ

3 голосов
/ 24 апреля 2009

Я наконец выяснил проблему - оболочка для элементов «кнопки» имела высоту 0. В режиме отладки приложение выяснило, что к кнопкам прикасались, даже если они не находились в области попадания их родительский вид (по умолчанию для clipsToBounds установлено значение NO, поэтому элементы кнопок были по-прежнему идеально видны), в режиме выпуска не так много.

Надеюсь, это поможет некоторым людям сэкономить время, которое мне пришлось пройти по царапинам и отладке :) Я также опубликовал эту ошибку в Apple, так что, надеюсь, она когда-нибудь будет исправлена.

...