Программно нажмите на экран - PullRequest
0 голосов
/ 26 июня 2018

Есть ли способ выполнить касание экрана программно?

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

Итак, мне нужно смоделировать нажатие, когда пользователь нажимает на экран, и компонент в этой позиции будет реагировать, например, кнопка.

1 Ответ

0 голосов
/ 26 июня 2018

Вот что я использовал в тестах:

class TouchMock: UITouch {
    var y: CGFloat

    init(y: CGFloat) {
        self.y = y
        super.init()
    }

    override func location(in view: UIView?) -> CGPoint {
        return CGPoint(x: 10, y: y)
    }
}

func sendTouchesBegan(y: CGFloat, to view: UIView) {
    let touch = TouchMock(y: y)
    view.touchesBegan([touch], with: nil)
}

func sendTouchesMoved(y: CGFloat, to view: UIView) {
    let touch = TouchMock(y: y)
    view.touchesMoved([touch], with: nil)
}

func sendTouchesEnded(y: CGFloat, to view: UIView) {
    let touch = TouchMock(y: y)
    view.touchesEnded([touch], with: nil)
}

func sendTouchesCancelled(y: CGFloat, to view: UIView) {
    let touch = TouchMock(y: y)
    view.touchesCancelled([touch], with: nil)
}

Важно: для меня была интересна только Y-координата. Добавление X-координаты, конечно, тривиально.

...