Подтвердить что ты не робот

Swift: как отключить взаимодействие пользователя при выполнении действия касания?

Я работаю с комплектом спрайтов, и если пользователь касается экрана, действия в

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    /* Called when a touch begins */

    for touch: AnyObject in touches {
    }
}

. Однако, пока они выполняются, пользователь все еще может нажать экран, и приложение пытается снова запустить действия.

Как отключить сенсорное взаимодействие/действия внутри функции touch при выполнении действий?

4b9b3361

Ответ 1

Попытайтесь получить представление от сенсорного объекта и затем отключить взаимодействие с пользователем.

touch.view.isUserInteractionEnabled = false

Ответ 2

В Swift 3.0 есть:

self.view.isUserInteractionEnabled = false

Ответ 3

Чтобы отключить взаимодействие с пользователем в приложении, используйте:

UIApplication.shared.beginIgnoringInteractionEvents()
UIApplication.shared.endIgnoringInteractionEvents()

Ответ 4

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

Используйте UIApplication.shared.beginIgnoringInteractionEvents() в конце первого метода, затем измените значение логического и затем используйте другой метод с начальной строкой UIApplication.shared.endIgnoringInteractionEvents().

Ответ 5

просто перейдите к раскадровке и снимите эту опцию в любом объекте, который вы хотите отключить взаимодействие пользователя enter image description here

Ответ 6

Если вы хотите отключить взаимодействие с пользователем кнопок, просто сделайте это при загрузке экрана.

self.btnname.isUserInteractionEnabled = false

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

Если по каким-либо причинам вы хотите включить взаимодействие, просто измените "false" на "true".

Ответ 7

- SwiftUI

SomeView()
.allowsHitTesting(false)