2016-12-13 8 views
0

Я пытаюсь понять, как фокус работает, когда у меня есть кнопка внутри таблицы.UIButton focus в UITableView

Целью является создание представления таблицы с пользовательской ячейкой, размер которой равен размеру таблицы (я хочу видеть только одну ячейку в то время). Когда кнопка фокусируется, я хочу прокручивать (представление таблицы делает это автоматически), в следующую ячейку и видеть только следующую ячейку. Я убедился, что кнопка будет находиться в фокусе, а не ячейки просмотра таблицы, путем переопределения этого метода в таблице ячейки:

override var canBecomeFocused: Bool{ 
     return false 
} 

Кнопка сфокусирован и когда я пальцем вверх/вниз, фокус перемещается между кнопками, а не Table it self (большой успех) ... НО, просмотр таблицы автоматически прокручивается, и я хочу понять, почему в некоторых случаях (когда таблица и таблица Cell больше 360 пикселей), это прокрутка к следующей ячейке, и я могу видеть только следующую ячейку (вид таблицы и ячейку того же размера), а иногда (когда таблица и ячейка меньше, чем 360 пикселей), просмотр таблицы немного немного, пока в следующей ячейке отображается только кнопка (это означает, что ячейка не отображается полностью)

Итак, у меня есть:

клеток и размер таблицы вид ячейки являются Greater затем 360, мы можем видеть, что, когда кнопка находится в фокусе, вид таблицы прокрутки в центре ячейки, и мы можем видеть только 1 клетка:

enter image description here размер ячейки и вид ячейки таблицы меньше, то 360, то можно увидеть, что, когда кнопка находится в фокусе, вид таблицы прокрутки в какой-то момент, когда кнопка показана

enter image description here

FYI: Я думаю, что размер кнопки не влияет на прокрутку, только просмотр таблицы и размер ячейки таблицы влияют на прокрутку.

Кто-нибудь? Есть идеи ?

This is the test Project: для того, чтобы увидеть это лучше, пожалуйста, изменить размер вид таблицы и размер ячейки, чтобы быть меньше, чем 360, и убедитесь, что UIButton центрируется: Project

+0

С трудом изображая вашу проблему. Это ясно, пока вы не получите часть «НО». У меня есть пара идей, в которых это может произойти, но больше информации было бы полезно. – rottenoats

+0

hey @rugdealer Я постараюсь объяснить это лучше. когда я прокручиваю вверх/вниз по экрану таблицы, прокрутите до следующей кнопки, которая должна быть фокусом. если я изменил размер табличного вида на 360 и выше, представление таблицы перейдет к следующей кнопке, и ячейка будет центрирована. если я изменил размер табличного вида на меньший, чем 360, представление таблицы будет прокручиваться до следующей кнопки, и ячейка не будет центрирована. В общем, цель состоит в том, чтобы увидеть только 1 ячейку после салфетки. – Sosily

ответ

0

Вы можете поместить эти методы в подклассе UITableViewCell в. см

override var preferredFocusEnvironments: [UIFocusEnvironment]{ 
    // Condition 
} 
override func shouldUpdateFocus(in context: UIFocusUpdateContext) -> Bool { 
    // Condition 
} 
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) { 
    // Condition 
} 

вы можете увидеть больше по этой ссылке: enter link description here