Вопрос

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

Основной вид оболочки является подклассом UIView и он содержит ряд "кнопок", которые добавляются в качестве вложенных представлений.Пользовательский класс button расширяет 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.Они работают в режиме отладки, но не выпуска.

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top