UIFocusGuide UITableView and UIButton

耗尽温柔 提交于 2019-12-11 06:44:29

问题


I am having a hard time creating a UIFocusGuide that will jump from the UITableView to a UIButton. Here is the debugger context screenshot:

And here is the implementation:

override func viewDidLoad() {
        super.viewDidLoad()

        self.tableView.delegate = self
        self.tableView.dataSource = self

        // add the focus guide
        self.view.addLayoutGuide(focusGuide)

        // add the anchors
        self.focusGuide.leftAnchor.constraintEqualToAnchor(self.button.leftAnchor).active = true
        self.focusGuide.topAnchor.constraintEqualToAnchor(self.tableView.topAnchor).active = true
        self.focusGuide.widthAnchor.constraintEqualToAnchor(self.button.widthAnchor).active = true
        self.focusGuide.heightAnchor.constraintEqualToAnchor(self.tableView.heightAnchor).active = true
    }

    override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {

        guard let nextFocusedView = context.nextFocusedView else { return }

        switch nextFocusedView {
        case self.button:
            self.focusGuide.preferredFocusedView = self.button

        case self.tableView:
            self.focusGuide.preferredFocusedView = self.tableView

        default:
            self.focusGuide.preferredFocusedView = nil
        }

    }

The didUpdateFocusInContext function is never getting called when I am at the middle item of the UITableView or the end of the UITableView.


回答1:


Add the focus guide to the button not self.view. You don't need override didUpdateFocusInContext For example:

var focusGuide = UIFocusGuide()
override func viewDidLoad() {
        super.viewDidLoad()

        self.tableView.delegate = self
        self.tableView.dataSource = self

        // add the focus guide
        self.button.addLayoutGuide(focusGuide)

        // add the anchors
        self.focusGuide.leftAnchor.constraintEqualToAnchor(self.button.leftAnchor).active = true
        self.focusGuide.topAnchor.constraintEqualToAnchor(self.tableView.topAnchor).active = true
        self.focusGuide.widthAnchor.constraintEqualToAnchor(self.button.widthAnchor).active = true
        self.focusGuide.heightAnchor.constraintEqualToAnchor(self.tableView.heightAnchor).active = true
}


来源:https://stackoverflow.com/questions/38810744/uifocusguide-uitableview-and-uibutton

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!