Заставьте метод touchesBegan работать для определенного вида / изображения - PullRequest
0 голосов
/ 29 октября 2018

Я искал в Google это, но не смог найти ответ.

Я хочу использовать TouchesBegan, но только для определенного вида, чтобы при нажатии чего-либо на другом экране игра не запускалась. (Я хочу создать несколько уровней для своей игры, но я не хочу проходить через spritkit) В общем, чтобы подвести итог, я хочу иметь функцию TouchesBegan в одном представлении, но не в другом / есть ли способ выключить TouchesBegan с помощью оператора?

Заранее спасибо за ваши ответы / или пример кода будет здорово:)

Лучший, Самсон С.

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    // First touch to start the game
    if gameState == .ready {
        startGame()

    }


    audioPlayerNine.play()
    audioPlayerTwo.stop()
    clockLabel.isHidden = false
    bestTimeLabel.isHidden = false
    startText.isHidden = true
    bgImageTwo.isHidden = true
    bgImage.isHidden = false
    rText.isHidden = true
    fText.isHidden = true
    iText.isHidden = true
    bgImageThree.isHidden = true
    periodText.isHidden = true
    audioPlayerFour.stop()
    restartText.isHidden = true
    audioPlayerFive.stop()
    audioPlayerFive.currentTime = 0
    lineImage.isHidden = false
    lineImageTwo.isHidden = false
    periodTextTwo.isHidden = false
    self.rTextTwo.isHidden = false
    self.iTextTwo.isHidden = false
    self.fTextTwo.isHidden = false
    levelLabel.isHidden = false
    audioPlayerSeven.play()
    audioPlayerSeven.volume = 0.3
    audioPlayerSix.stop()
    audioPlayerTen.play()
    audioPlayerTen.volume = 0.2
    audioPlayerNine.volume = 1.5
    eText.isHidden = true
    eTextTwo.isHidden = false
    bgImageMenu.isHidden = true
    resumeButton.isHidden = true
    restartButton.isHidden = true
    mainMenuButton.isHidden = true
    muteButton.isHidden = true
    unMuteButton.isHidden = true
    menuLine.isHidden = true
    menuLineTwo.isHidden = true
    bestTimeLabel.isHidden = true
    imagewhite.isHidden = false
    imagewhiteTwo.isHidden = false
    menuButton.isHidden = false
    bestLabel.isHidden = true





    if let touchLocation = event?.allTouches?.first?.location(in: view) {
        // Move the player to the new position
        movePlayer(to: touchLocation)

        // Move all enemies to the new position to trace the player
        moveEnemies(to: touchLocation)
    }
}

1 Ответ

0 голосов
/ 29 октября 2018

touchesBegan () - это метод, определенный NSResponder, и каждый UIView в вашем приложении является NSResponder. Это означает, что метод touchesBegan () в вашем коде уже работает для конкретного представления. Если вы посмотрите на класс, частью которого он является, он похож на UIView или viewController, и этот метод touchesBegan () получает касания в любом месте этого представления.

В программах с разными представлениями у вас могут быть разные методы touchesBegan (), по одному для каждого вида (или по одному для каждого вида со значительными сенсорными действиями). Эти методы могут выполнять разные вещи - можно начинать игру, перемещать фигуры в игре и т. Д.

В общем, touchesBegan () полезен для ситуаций (и представлений), где вы хотите отслеживать, где и как ваш пользователь перемещается по представлению. Если вас интересует только касание элемента вашего экрана для запуска одного действия (например, запуска игры), UIButton (особый тип просмотра) часто является более удобным подходом, чем реализация вашего собственного прикосновения. обработчик. Вот очень простое руководство для кнопок UIB в Swift и iOS. В вашем случае state кнопки (независимо от того, активируется она или отключается) можно установить, когда gameState == .ready), а action кнопки (что происходит при нажатии кнопки) может быть вызовом startGame().

...