swift - iOS 键盘只有数字和文本

标签 swift ios8

我想要一个类似于这个的键盘: enter image description here

所以,只有第一行的数字和下面的字母。在 iOS 8 中有没有一种简单的方法可以做到这一点? UIKeyboardType 似乎都没有这种结构。

最佳答案

有一种简单的方法可以实现,您必须为其制作自定义键盘,因为没有您想要的内置键盘。所以下载这个tasty-imitation-keyboard .您可以将其代码修改为 DefaultKeyboard.swift,如下所示:

func defaultKeyboard() -> Keyboard {
    var defaultKeyboard = Keyboard()

    // add this row at index 0.
    for key in ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] {
        var keyModel = Key(.Character)
        keyModel.setLetter(key)
        defaultKeyboard.addKey(keyModel, row: 0, page: 0)
    }

    for key in ["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"] {
        var keyModel = Key(.Character)
        keyModel.setLetter(key)
        defaultKeyboard.addKey(keyModel, row: 1, page: 0)
    }

    for key in ["A", "S", "D", "F", "G", "H", "J", "K", "L"] {
        var keyModel = Key(.Character)
        keyModel.setLetter(key)
        defaultKeyboard.addKey(keyModel, row: 2, page: 0)
    }

    var keyModel = Key(.Shift)
    defaultKeyboard.addKey(keyModel, row: 3, page: 0)

    for key in ["Z", "X", "C", "V", "B", "N", "M"] {
        var keyModel = Key(.Character)
        keyModel.setLetter(key)
        defaultKeyboard.addKey(keyModel, row: 3, page: 0)
    }

    var backspace = Key(.Backspace)
    defaultKeyboard.addKey(backspace, row: 3, page: 0)

    var keyModeChangeNumbers = Key(.ModeChange)
    keyModeChangeNumbers.uppercaseKeyCap = "123"
    keyModeChangeNumbers.toMode = 1
    defaultKeyboard.addKey(keyModeChangeNumbers, row: 4, page: 0)

    var keyboardChange = Key(.KeyboardChange)
    defaultKeyboard.addKey(keyboardChange, row: 4, page: 0)

    var settings = Key(.Settings)
    defaultKeyboard.addKey(settings, row: 4, page: 0)

    var space = Key(.Space)
    space.uppercaseKeyCap = "space"
    space.uppercaseOutput = " "
    space.lowercaseOutput = " "
    defaultKeyboard.addKey(space, row: 4, page: 0)

    var returnKey = Key(.Return)
    returnKey.uppercaseKeyCap = "return"
    returnKey.uppercaseOutput = "\n"
    returnKey.lowercaseOutput = "\n"
    defaultKeyboard.addKey(returnKey, row: 4, page: 0)

    for key in ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] {
        var keyModel = Key(.SpecialCharacter)
        keyModel.setLetter(key)
        defaultKeyboard.addKey(keyModel, row: 0, page: 1)
    }

    for key in ["-", "/", ":", ";", "(", ")", "$", "&", "@", "\""] {
        var keyModel = Key(.SpecialCharacter)
        keyModel.setLetter(key)
        defaultKeyboard.addKey(keyModel, row: 1, page: 1)
    }

    var keyModeChangeSpecialCharacters = Key(.ModeChange)
    keyModeChangeSpecialCharacters.uppercaseKeyCap = "#+="
    keyModeChangeSpecialCharacters.toMode = 2
    defaultKeyboard.addKey(keyModeChangeSpecialCharacters, row: 2, page: 1)

    for key in [".", ",", "?", "!", "'"] {
        var keyModel = Key(.SpecialCharacter)
        keyModel.setLetter(key)
        defaultKeyboard.addKey(keyModel, row: 2, page: 1)
    }

    defaultKeyboard.addKey(Key(backspace), row: 2, page: 1)

    var keyModeChangeLetters = Key(.ModeChange)
    keyModeChangeLetters.uppercaseKeyCap = "ABC"
    keyModeChangeLetters.toMode = 0
    defaultKeyboard.addKey(keyModeChangeLetters, row: 3, page: 1)

    defaultKeyboard.addKey(Key(keyboardChange), row: 3, page: 1)

    defaultKeyboard.addKey(Key(settings), row: 3, page: 1)

    defaultKeyboard.addKey(Key(space), row: 3, page: 1)

    defaultKeyboard.addKey(Key(returnKey), row: 3, page: 1)

    for key in ["[", "]", "{", "}", "#", "%", "^", "*", "+", "="] {
        var keyModel = Key(.SpecialCharacter)
        keyModel.setLetter(key)
        defaultKeyboard.addKey(keyModel, row: 0, page: 2)
    }

    for key in ["_", "\\", "|", "~", "<", ">", "€", "£", "¥", "•"] {
        var keyModel = Key(.SpecialCharacter)
        keyModel.setLetter(key)
        defaultKeyboard.addKey(keyModel, row: 1, page: 2)
    }

    defaultKeyboard.addKey(Key(keyModeChangeNumbers), row: 2, page: 2)

    for key in [".", ",", "?", "!", "'"] {
        var keyModel = Key(.SpecialCharacter)
        keyModel.setLetter(key)
        defaultKeyboard.addKey(keyModel, row: 2, page: 2)
    }

    defaultKeyboard.addKey(Key(backspace), row: 2, page: 2)

    defaultKeyboard.addKey(Key(keyModeChangeLetters), row: 3, page: 2)

    defaultKeyboard.addKey(Key(keyboardChange), row: 3, page: 2)

    defaultKeyboard.addKey(Key(settings), row: 3, page: 2)

    defaultKeyboard.addKey(Key(space), row: 3, page: 2)

    defaultKeyboard.addKey(Key(returnKey), row: 3, page: 2)

    return defaultKeyboard
}

你的结果将是:

enter image description here

关于swift - iOS 键盘只有数字和文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30685309/

相关文章:

swift - 改为使用协议(protocol)实现 `Array` 和 `ArraySlice` 扩展

xcode - Xcode 中的 iOS 图表折线图不显示所有值。为什么?

ios - 除了 swift 中的按钮操作外,UIView 没有显示

ios - iAd 插页式广告的奇怪行为

ios - 调用 alamofire swift 3 时的额外参数

objective-c - 在 Xcode 6 beta 中使用 Size Classes

ios - 启用 gzip 的 NSURLCache 和 ETags 不工作

ios7 - UIScreen.mainScreen().nativeBounds.height 无法使用 Xcode 7/Swift 2,目标 iOS7

swift - 如何在 UITableView 中为 textLabel 的 alpha 设置动画?

ios - 在 Swift 中链接多个异步函数