2009-04-20 4 views
1

У меня возникла странная проблема, когда пользовательский элемент управления, который я создал для 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 из этих функций вызываются в моменты можно было бы ожидать, с построения релиза, ничего не происходит , У меня есть вход в каждый из них, и я не получаю никаких сообщений журнала (работает другое ведение журнала).

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

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

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

+0

С этой информацией немного сложно сказать. Получаете ли вы какие-либо предупреждения, когда вы очищаете все цели и перестраиваете сборку релизов? Создана ли ваша версия для другой цели для сборки отладки? –

+0

У Clean build нет ошибок или предупреждений, все настройки сборки одинаковы, за исключением того, что для Active Configuration установлено значение Release вместо Debug. Это воспроизводится на iPhone, iPod touch и симуляторе. – Loktar

ответ

3

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

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