Жест прокрутки iOS 5.1, захваченный UISplitViewController — как избежать?

Новое поведение в iOS 5.1, связанное с UISplitViewController приложениями, похоже, перехватывает UISlider движение с нежелательными результатами. Это также может относиться к UISegmented элементам управления и любой другой поверхности управления, которая обрабатывает жесты слева направо.

При UISplitView в портретной ориентации основной вид обычно скрыт. Начиная с iOS 5.1, смахивание вправо по экрану вызывает основной вид на левой стороне устройства. Проблема в том, что скольжение большого пальца моего элемента управления UISlider неверно интерпретируется как пролистывание экрана: если я резко нажму большой палец UISlider вправо, появится мастер-панель.

В моем приложении есть нежелательные побочные эффекты (и проблемы с производительностью) при отображении главного представления.

Я считаю такое поведение ошибкой Apple. Любые идеи, как обойти это? Могу ли я каким-то образом заставить UISlider захватить жест и обработать его, не передавая его по цепочке респондентов?

Заранее спасибо за любую информацию!


person jbbenni    schedule 13.03.2012    source источник
comment
благодаря @Dimitris Tavlikos. Хотя я по-прежнему считаю, что Apple создала ошибку с этим (UIControls, такие как UISlider, не должны конкурировать с UISplitViewController из-за этого жеста), есть простой обходной путь: splitViewController.presentsWithGesture = NO; // SplitView won't recognize right swipe Что такого в публикации вопроса, который заставляет вас внезапно найти ответ в другом месте?   -  person jbbenni    schedule 14.03.2012
comment
Что делать, если я хочу сохранить функциональность жестов по умолчанию на мастере, но отключить ее только при перемещении ползунка? Установка presentsWithGesture на no отключает жест везде.   -  person Mark13426    schedule 25.11.2016
comment
Не произойдет. Ползунок не двигается, потому что жест перехватывается до того, как ползунок начинает двигаться. Вы не можете отключить захват только во время движения ползунка, потому что ползунок даже не начинает двигаться. Это долгий путь, но может быть способ перехватить жест перед обработкой, а затем определить, запустил ли бы он движение ползунка, и в этом случае отключить захват. Но это сложно. Иерархия обработки событий работает против вас, поскольку ОС получает доступ к жесту первой.   -  person jbbenni    schedule 04.12.2016


Ответы (1)


Apple подтвердила, что проблема является дубликатом ранее обнаруженной ошибки, которая в настоящее время расследуется (идентификатор ошибки № 10170209).

Обходной путь, кажется, работает нормально на данный момент.

person jbbenni    schedule 17.03.2012