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
}
}