Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios iAction在触摸按钮时有时不被调用-Swift_Ios_Swift_Button_Touch_Ibaction - Fatal编程技术网

Ios iAction在触摸按钮时有时不被调用-Swift

Ios iAction在触摸按钮时有时不被调用-Swift,ios,swift,button,touch,ibaction,Ios,Swift,Button,Touch,Ibaction,我正在尝试开发一个文字游戏,玩家点击按钮选择字母 似乎有一个问题,我的按钮有时不登记接触。只有在按钮触摸前暂停几秒钟且没有用户交互时,才会出现这种情况。如果第一次触摸有效,快速后续触摸也有效 @IBAction func tileButton1(_ sender: UIButton) { print("Tile 1 Selected") tileSelected(tileSelected: 1) } @IBAction func clearButton(_ sender: An

我正在尝试开发一个文字游戏,玩家点击按钮选择字母

似乎有一个问题,我的按钮有时不登记接触。只有在按钮触摸前暂停几秒钟且没有用户交互时,才会出现这种情况。如果第一次触摸有效,快速后续触摸也有效

@IBAction func tileButton1(_ sender: UIButton) {
    print("Tile 1 Selected")
    tileSelected(tileSelected: 1)
}

@IBAction func clearButton(_ sender: Any) {
    clearSelectedTiles()
}


@IBAction func SubmitButton(_ sender: Any) {
    //print("Submit Button Pressed")
    checkIfSubmittedWordIsValid()
}
检查是否提交或验证

func checkIfSubmittedWordIsValid() {
    var alreadySelectedWords: [String] = []
    switch currentPlayer {
    case 1:
        alreadySelectedWords = player1words
    case 2:
        alreadySelectedWords = player2words
    case 3:
        alreadySelectedWords = player3words
    case 4:
        alreadySelectedWords = player4words
    default:
        break
    }
    if currentWord.characters.count < 3 {
        print("Too short")
        playSound(fileName: "invalidWord", fileExtension: "aiff", volume: 1.0)
    } else if alreadySelectedWords.contains(currentWord) {
        print("Already picked this word")
        playSound(fileName: "invalidWord", fileExtension: "aiff", volume: 1.0)
    } else if wordList.contains(currentWord.lowercased()) {
        print("Valid Word")
        playSound(fileName: "goodWord", fileExtension: "wav", volume: 0.5)
        addWordToPlayerList(word: currentWord)
    } else {
        print("Not in dictionary")
        playSound(fileName: "invalidWord", fileExtension: "aiff", volume: 1.0)
    }
    clearSelectedTiles()
}
问题发生时不会打印任何内容。用第二次触摸快速跟进将触发iAction并打印到日志

我的所有其他按钮(另外15个“平铺”按钮和一个“清除”和“提交”按钮)似乎也会出现这种情况

我做错了什么

最初的几次接触起作用,但随后是怪异

选定的瓷砖

func tileSelected(tileSelected: Int) {
    if isTileValid(tile: tileSelected) {
        selectedTiles.append(tileSelected)
        var surroundingTiles: [Int] = []
        switch tileSelected {
        case 1:
            tile1.alpha = 0.5
            surroundingTiles = [2,5,6]
        case 2:
            tile2.alpha = 0.5
            surroundingTiles = [1,3,5,6,7]
        case 3:
            tile3.alpha = 0.5
            surroundingTiles = [2,4,6,7,8]
        case 4:
            tile4.alpha = 0.5
            surroundingTiles = [3,7,8]
        case 5:
            tile5.alpha = 0.5
            surroundingTiles = [1,2,6,9,10]
        case 6:
            tile6.alpha = 0.5
            surroundingTiles = [1,2,3,5,7,9,10,11]
        case 7:
            tile7.alpha = 0.5
            surroundingTiles = [2,3,4,6,8,10,11,12]
        case 8:
            tile8.alpha = 0.5
            surroundingTiles = [3,4,7,11,12]
        case 9:
            tile9.alpha = 0.5
            surroundingTiles = [5,6,10,13,14]
        case 10:
            tile10.alpha = 0.5
            surroundingTiles = [5,6,7,9,11,13,14,15]
        case 11:
            tile11.alpha = 0.5
            surroundingTiles = [6,7,8,10,12,14,15,16]
        case 12:
            tile12.alpha = 0.5
            surroundingTiles = [7,8,11,15,16]
        case 13:
            tile13.alpha = 0.5
            surroundingTiles = [9,10,14]
        case 14:
            tile14.alpha = 0.5
            surroundingTiles = [9,10,11,13,15]
        case 15:
            tile15.alpha = 0.5
            surroundingTiles = [10,11,12,14,16]
        case 16:
            tile16.alpha = 0.5
            surroundingTiles = [11,12,15]
        default:
            // do nothing
            break
        }
        updateValidTiles(surroundingTiles: surroundingTiles)
        //print("Updated Valid Tiles")
        //print(validTiles)
        //print("Selected Tiles")
        //print(selectedTiles)
        currentWord = currentWord + boardTiles[tileSelected - 1].tileLetter
        selectedWordLabel.text = currentWord
    }
}

尝试将向下触碰更改为内部触碰,并尝试在每次单击按钮时更改按钮的状态

尝试将向下触碰更改为内部触碰,并尝试在每次单击按钮时更改按钮的状态

我将一些标签约束在
顶部布局指南中。底部
即使我使用
覆盖变量prefersStatusBarHidden隐藏状态栏


将相关标签约束更改为
topMargin
而不是
Top Layout Guide(顶部布局指南)。底部
解决了我有时会错过触摸的问题。

我将一些标签约束到
Top Layout Guide(顶部布局指南)。底部
即使我用
覆盖变量隐藏状态栏首选StatusBarHidden


将相关的标签约束更改为
topMargin
而不是
Top Layout Guide(顶部布局指南)。底部
解决了我的问题,有时会遗漏触摸。

您需要设置事件内部触摸的操作。您是否尝试了事件内部触摸?视频中的问题只有在单击“提交”按钮时才会出现。提交函数中发生了什么?如何清除突出显示的按钮状态?显示您的代码。请显示您处理提交的功能action@NiravD我尝试过内部润色,没有区别。你需要设置内部事件润色的操作。你尝试过内部事件润色吗?只有当你单击“提交”按钮时,视频中的问题才会开始出现。提交函数中发生了什么?如何清除突出显示的按钮状态?显示您的代码。请显示您处理提交的功能action@Nirav我试过在里面补一下,没什么区别。
func tileSelected(tileSelected: Int) {
    if isTileValid(tile: tileSelected) {
        selectedTiles.append(tileSelected)
        var surroundingTiles: [Int] = []
        switch tileSelected {
        case 1:
            tile1.alpha = 0.5
            surroundingTiles = [2,5,6]
        case 2:
            tile2.alpha = 0.5
            surroundingTiles = [1,3,5,6,7]
        case 3:
            tile3.alpha = 0.5
            surroundingTiles = [2,4,6,7,8]
        case 4:
            tile4.alpha = 0.5
            surroundingTiles = [3,7,8]
        case 5:
            tile5.alpha = 0.5
            surroundingTiles = [1,2,6,9,10]
        case 6:
            tile6.alpha = 0.5
            surroundingTiles = [1,2,3,5,7,9,10,11]
        case 7:
            tile7.alpha = 0.5
            surroundingTiles = [2,3,4,6,8,10,11,12]
        case 8:
            tile8.alpha = 0.5
            surroundingTiles = [3,4,7,11,12]
        case 9:
            tile9.alpha = 0.5
            surroundingTiles = [5,6,10,13,14]
        case 10:
            tile10.alpha = 0.5
            surroundingTiles = [5,6,7,9,11,13,14,15]
        case 11:
            tile11.alpha = 0.5
            surroundingTiles = [6,7,8,10,12,14,15,16]
        case 12:
            tile12.alpha = 0.5
            surroundingTiles = [7,8,11,15,16]
        case 13:
            tile13.alpha = 0.5
            surroundingTiles = [9,10,14]
        case 14:
            tile14.alpha = 0.5
            surroundingTiles = [9,10,11,13,15]
        case 15:
            tile15.alpha = 0.5
            surroundingTiles = [10,11,12,14,16]
        case 16:
            tile16.alpha = 0.5
            surroundingTiles = [11,12,15]
        default:
            // do nothing
            break
        }
        updateValidTiles(surroundingTiles: surroundingTiles)
        //print("Updated Valid Tiles")
        //print(validTiles)
        //print("Selected Tiles")
        //print(selectedTiles)
        currentWord = currentWord + boardTiles[tileSelected - 1].tileLetter
        selectedWordLabel.text = currentWord
    }
}