Как выполнить событие действия в tvOS на фокусе кнопки

Я хотел бы выполнять определенные действия всякий раз, когда моя кнопка находится в фокусе, а не нажимать ее вручную в tvOS.

У меня есть четыре UIButtons, выстроенных горизонтально, и когда пользователь просто фокусируется на одной из 4 кнопок, я показываю UIView с некоторой информацией.

Как я могу выполнить действие, не нажимая кнопку?


person Shane D    schedule 25.12.2015    source источник


Ответы (1)


Вы можете выполнить свое действие, когда одна из кнопок станет сфокусированным видом.

Вы можете назначить тег каждой кнопке и использовать тег сфокусированной кнопки, чтобы определить, какое действие следует предпринять. Для удобства чтения вы можете определить enum со значениями для каждого тега.

enum FocusedButtonTag: Int {
    case First // Substitute with names that correspond to button's title/action
    case Second
    case Third
    case Fourth
}

override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
    super.didUpdateFocusInContext(context, withAnimationCoordinator: coordinator)
    guard let button = UIScreen.mainScreen().focusedView as? UIButton else {
        return
    }
    // Update your UIView with the desired information based on the focused button
    switch button.tag {
        case FocusedButtonTag.First.rawValue:
            ... // first button's action
        case FocusedButtonTag.Second.rawValue:
            ... // second button's action
        case FocusedButtonTag.Third.rawValue:
            ... // third button's action
        case FocusedButtonTag.Fourth.rawValue:
            ... // fourth button's action
        default:
            break
    }
}
person Community    schedule 25.12.2015