如何在按下另一个键时模拟按键?
How to simulate a key press when another key is pressed?
我正在尝试获取删除键来执行 spacebar 通常执行的操作。换句话说,当用户在 UITextField 中单击删除时,我希望出现 space。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let char = string.cString(using: String.Encoding.utf8)!
let isBackSpace = strcmp(char, "\b")
if (isBackSpace == -92) {
print("Delete was pressed")
return false
}
return true
}
我知道这只会禁用删除键,但我该如何继续?此外,space 将替换所选文本(总会有一些文本被选中)。
textField
参数是用户正在使用的文本字段。你可以在那里做任何你想做的事。因此,除了返回 false
之外,在返回 textField
之前,将 textField
的 text
更改为您想要的任何内容。
如果你想做的是将 space 附加到文本,一个简单的方法是获取 textField.text!
,将 space 附加到该字符串,然后设置 textField.text
。或者,如果您想用 space 替换当前选择,而不是让它被删除,请对 textField.text
执行此操作,使用 range
参数告诉您 space 应该去。
换句话说,如果您完全了解如何使用字符串,则可以作为此方法的一部分对 textField.text
字符串执行此操作。
还有其他方法可以使用 UITextInput 协议,它可以让您伪装成键盘。例如,只说 textField.insertText(" ")
可能会给您想要的结果,但您必须尝试一下才能看到。
我正在尝试获取删除键来执行 spacebar 通常执行的操作。换句话说,当用户在 UITextField 中单击删除时,我希望出现 space。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let char = string.cString(using: String.Encoding.utf8)!
let isBackSpace = strcmp(char, "\b")
if (isBackSpace == -92) {
print("Delete was pressed")
return false
}
return true
}
我知道这只会禁用删除键,但我该如何继续?此外,space 将替换所选文本(总会有一些文本被选中)。
textField
参数是用户正在使用的文本字段。你可以在那里做任何你想做的事。因此,除了返回 false
之外,在返回 textField
之前,将 textField
的 text
更改为您想要的任何内容。
如果你想做的是将 space 附加到文本,一个简单的方法是获取 textField.text!
,将 space 附加到该字符串,然后设置 textField.text
。或者,如果您想用 space 替换当前选择,而不是让它被删除,请对 textField.text
执行此操作,使用 range
参数告诉您 space 应该去。
换句话说,如果您完全了解如何使用字符串,则可以作为此方法的一部分对 textField.text
字符串执行此操作。
还有其他方法可以使用 UITextInput 协议,它可以让您伪装成键盘。例如,只说 textField.insertText(" ")
可能会给您想要的结果,但您必须尝试一下才能看到。