我有一个自定义键盘扩展名,该扩展名将数据从BLE设备输入到文本字段中。
func getdata(data:Data){
...
processing data from BLE device
...
dataToSend = "...\n"
textDocumentProxy.insertText(dataToSend)
}
使用此功能在不同的应用程序中插入文本时,其行为会有所不同。例如,在注释中,换行符(“ \ n”)似乎可以正常工作并插入新行。但是,当将数据插入电子邮件或号码表时,它无法正常工作,并且没有插入新行,而是插入了制表符(“ \ t”)。
我还有一个插入换行符的功能
func newLine(){
textDocumentProxy.insertText("\n")
}
无论我使用什么应用程序,它都能按预期工作。有谁知道为什么“ \ n”本身可以正常工作,但是在字符串末尾具有不同的行为?
出于完整性考虑,我尝试在getdata()的末尾调用newLine(),以为在字符串末尾插入“ \ n”可能会有问题,但结果是相同的。
答案 0 :(得分:0)
还有其他newLine字符可用,但我不能只是将它们粘贴到这里(因为它们会换行)。
使用此扩展程序:
extension CharacterSet {
var allCharacters: [Character] {
var result: [Character] = []
for plane: UInt8 in 0...16 where self.hasMember(inPlane: plane) {
for unicode in UInt32(plane) << 16 ..< UInt32(plane + 1) << 16 {
if let uniChar = UnicodeScalar(unicode), self.contains(uniChar) {
result.append(Character(uniChar))
}
}
}
return result
}
}
您可以访问任何CharacterSet
中的所有字符。有一个名为newlines
的字符集。使用其中之一来满足您的要求:
let newlines = CharacterSet.newlines.allCharacters
for newLine in newlines {
textDocumentProxy.insertText(String(newLine))
}
然后将您测试过并工作过的产品存储到任何地方,并在任何地方使用。 请注意,您无法中继字符集的索引。可能会改变。