0

请考虑以下代码:

override var keyCommands: [UIKeyCommand]? {
    var commands:[UIKeyCommand] = []

    let numbers = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
    for number in numbers {
        let txt = number as String
        commands.append(UIKeyCommand(input: txt, modifierFlags: [], action: #selector(keyPressed(_:))))
    }
    commands.append(UIKeyCommand(input: "\r", modifierFlags: [], action: #selector(enterPressed)))
    return commands
}

出于某种原因,只有数字被读取。这适用于模拟键盘的蓝牙条形码扫描仪。keyCommands 不能读取字母字符还是我做错了什么?

4

1 回答 1

0

多亏了 Eric Aya,我才得以完成这项工作。下面是我修改后的代码。它可能不是最优雅的解决方案,但它有效:

 override var keyCommands: [UIKeyCommand]? {
    var commands:[UIKeyCommand] = []

    let numbers = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]

    for number in numbers {
        let txt = number as String
        if Int(txt) == nil {
            commands.append(UIKeyCommand(input: txt, modifierFlags: [UIKeyModifierFlags.Shift], action: #selector(keyPressed(_:))))
        } else {
            commands.append(UIKeyCommand(input: txt, modifierFlags: [], action: #selector(keyPressed(_:))))
        }
    }
    commands.append(UIKeyCommand(input: "\r", modifierFlags: [], action: #selector(enterPressed)))
    return commands
}
于 2016-09-07T14:16:34.043 回答