【问题标题】:iOS Swift keyCommands Reading Numbers OnlyiOS Swift keyCommands 仅读取数字
【发布时间】:2016-09-07 13:30:25
【问题描述】:

请考虑以下代码:

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 无法读取字母字符还是我做错了什么?

【问题讨论】:

  • 条形码是否包含小写字母?
  • 不。全部大写。我什至尝试让数组只包含一个 X(我的测试条形码中的一个值),但它仍然没有读取它。
  • 您是否在某处将 UIKeyboardType 设置为全数字键盘?
  • 我看到有一个Shift modifier。这让我觉得您可能必须使用小写字母 + 修饰符才能获得大写字母。
  • Shift 修饰符就是答案。谢谢!我不得不将字母保留为大写,但现在一切正常。

标签: ios swift uikeycommand


【解决方案1】:

多亏了 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    相关资源
    最近更新 更多