Перетаскивание UIView как подпредставления UITableView отстает от пальца

Я разработал собственный подкласс UITableView. В какой-то момент мне нужно добавить UIView в качестве прямого подвида UITableView, перетащить его в табличное представление пальцем, а затем удалить из табличного представления. Я использую UILongPressGestureRecognizer для создания представления во многом аналогично приложению «Календарь» iOS, перетаскиваю его по табличному представлению, сбрасывая его фрейм, а затем удаляю его из табличного представления, добавляя его в ячейку.

Это работает, но с одной оговоркой. Когда я двигаю пальцем слишком быстро, я «теряю хватку» на UIView, и он не догоняет мой палец, пока я не верну палец в рамку представления, чтобы снова «поднять его».

Поскольку UITableView является подклассом UIScrollView, я попытался установить для свойств delaysContentTouchs и canCancelContentTouches в табличном представлении значение NO, а для свойства exclusiveTouch перетаскиваемого UIView значение YES. Ничего не получилось.

В конечном счете, я хочу иметь возможность перетаскивать свой UIView внутри табличного представления с такой же скоростью отклика, как и встроенное приложение «Календарь» iOS. Есть предположения?

P.S. Я относительно новичок в разработке iOS, поэтому, пожалуйста, простите меня, если здесь есть серьезный недосмотр.


person josephap    schedule 13.11.2012    source источник


Ответы (1)


Задача решена! Как оказалось, в настройке (добавление подпредставления в UITableView и перетаскивание) не было ничего плохого.

После долгих поисков я обнаружил, что выполнял HitTest каждый раз, когда представление перетаскивалось в новую координату. Можно было увидеть, как выполнение такой интенсивной операции каждую секунду может замедлить обработку на устройстве настолько, чтобы вызвать такое странное поведение. Когда я его поменял, все заработало отлично.

В конечном счете, урок, который нужно усвоить, заключался в том, что мой подкласс контроллера представления был слишком сложным и, следовательно, трудным для чтения. Чтобы раскрыть эту проблему, потребовалось слишком много копаний. С тех пор я очень старался упростить свой код - это было невероятно полезно.

person josephap    schedule 20.02.2013