UIHoverGestureRecognizer

Panther·2021년 7월 31일
0

https://developer.apple.com/documentation/uikit/uihovergesturerecognizer

"A discrete gesture recognizer that interprets pointer movement over a view."

뷰에 대한 포인터 움직임을 해석하는 이산적 제스쳐 리코그나이저입니다.

Declaration

class UIHoverGestureRecognizer : UIGestureRecognizer

Overview

macOS와 iPadOS 기기에서 사용자는 UI 요소에서 포인터를 움직일 수 있습니다. 몇 가지 UI 디자인의 경우 포인터가 요소에서 움직이는 시점(다른 사용자 상호작용은 없이)을 아는 것은 중요합니다. 대표적으로 마우스 버튼 클릭이 있습니다. 예를 들어 하이퍼링크에 대한 텍스트는 포인터가 링크로 움직일 때 색상을 변경하거나 밑줄이 나오는 형태로 나타날 것입니다. 이는 롤오버 효과를 생성합니다.

Note
iOS에서 이 클래스는 제스쳐를 인식하지 않습니다.

앱에서 이와 같은 경험을 제공하려면, 뷰에 포인터가 움직일 때 반응하는 호버 제스쳐 리코그나이저를 추가해야 합니다. 목표 및 시스템이 호출하는 액션을 갖는 제스쳐 리코그나이저를 제공해야 합니다. 시스템이 호출하는 액션은 포인터 진입, 빠져나오기, 뷰로 이동하는 액션을 말합니다. UIHoverGestureRecognizer는 iOS에서 작동하는 앱인 경우 효과가 없습니다. 아래 코드는 예시를 보여줍니다.

Listing 1 The button's default color changes to red as the pointer moves over the button

class ViewController: UIViewController {

    @IBOutlet var button: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        let hover = UIHoverGestureRecognizer(target: self, action: #selector(hovering(_:)))
        button.addGestureRecognizer(hover)
    }

    @objc
    func hovering(_ recognizer: UIHoverGestureRecognizer) {
        switch recognizer.state {
        case .began, .changed:
            button.titleLabel?.textColor = #colorLiteral(red: 1, green: 0, blue: 0, alpha: 1)
        case .ended:
            button.titleLabel?.textColor = UIColor.link
        default:
            break
        }
    }
}

0개의 댓글