У меня есть пользовательский подкласс UIView и полноэкранная UIButton с фоновым изображением, как вы можете видеть на изображении, с правой стороны, есть UIView с UIImageView на нем и некоторые другие не важные метки икнопок.Важным моментом является то, что в этом UIView есть два вида прокрутки, и во время выполнения я добавляю кнопки UIB (не маленькие, 200 x 100) к этим видам прокрутки с включенной вертикальной прокруткой.Ситуация действительно очень сложная, поэтому я напишу как элементы, что происходит в разных условиях.В моем приложении есть 10 таких полных экранов в пользовательском подклассе UIView, и я использую UIPanGestureRecognizer для прокрутки от одного к другому. У меня есть веская причина не использовать для этого прокрутку.Все окна (изображение ниже, а не UIWindow) заполняют свое содержимое в цикле, поэтому работающий код для них одинаков, и все они создаются из одного и того же файла .xib.И последняя информация: большая UIB-кнопка, которая покрывает все окно, имеет действие для touchupinside, а меньшие кнопки в обзорах прокрутки имеют свои собственные селекторы touchupinside.
- Некоторые из моих окон работают отлично, если я касаюсь где-либона экране вызывается действие кнопок большего размера, если я касаюсь и перетаскиваю, прокрутка работает и я перехожу к следующему / предыдущему окну, если я касаюсь меньших кнопок в просмотрах прокрутки, их действия запускаются и, наконец, я могу прекрасно прокручивать в этихкнопки.
- В некоторых из моих окон, когда я пытаюсь прокрутить просмотры прокрутки, большие окна pangesturerecognizer ловят это событие, а не маленькие прокрутки, и если я касаюсь маленькой кнопки в этом представлении прокрутки, событие большего размерасработал (он проходит через uibutton> uiscrollview> uiimageview> uiview к uibutton на кнопке, как будто они не существуют)
- если я заменим правый контейнерный вид на какую-то другую позицию на большом uibutton, он работает случайным образом илинетt, иногда одно из представлений прокрутки работает хорошо, а другое - нет.
- оно имеет согласованное поведение, если в одной позиции оно работает, оно всегда работает, а если нет, то никогда не работает.
- Опять же, для всех представлений и подклассов включено взаимодействие с пользователем. Да, обратное уже невозможно, поскольку поведение изменяется только в соответствии с положением представления контейнера на большой uibutton, а также в соответствии с фоновым изображением больших uibuttons.
- Я поместил метод touchesBegan только для целей тестирования, когда касания не работают должным образом, событие, запускаемое с помощью touch.view, является контейнером большой кнопки, даже если я касаюсь маленькой кнопки в пределах прокрутки..
Я уже потратил на это два дня, но безрезультатно. Что может вызвать такое поведение?
РЕДАКТИРОВАТЬ: После комментария Крумелура я изменил фокус с конфигурации этихпредставления к анимации, которые я даю контейнерам, и я заметил, что проблема заключается ванимации, я добавляю часть кода, которая анимирует все десять окон и ведет себя как пользовательский вид прокрутки.Все окна имеют свой собственный класс слоев, и когда я ловлю распознаватель пангестера, я перемещаю окна на экране с помощью следующего кода.элементы в этом коде это массив, который содержит слои всех окон.Анимация вызывает такую странную ситуацию, но я пока не могу понять ...
- (void)layoutSublayers {
[super layoutSublayers];
[CATransaction begin];
[CATransaction setDisableActions:YES];
float angleDelta = 2 * M_PI / [items count];
float a = angle;
for (UIBaseLayer *l in items) {
l.position = self.position;
CATransform3D translation = CATransform3DMakeTranslation(cosf(a)*(radius.x), 1.0, (sinf(a)*radius.y) - radius.y*1.0);
float dailyAngle = (M_PI_2 - a);
CATransform3D rotation = CATransform3DMakeRotation(dailyAngle, 0, 1.0, 0);
CATransform3D t = CATransform3DConcat(rotation, translation);
l.transform = t;
a += angleDelta;
}
[CATransaction commit];}
http://img836.imageshack.us/img836/296/screenshot20111215at013.png