Verwenden Sie "adjustTextPosition (byCharacterOffset: Int)", um den Cursor in der iOS-Tastaturerweiterung zu bewegen. Dokumentation ist perfekt
To move the insertion point in the text input view, use the adjustTextPosition(byCharacterOffset:) method. For example, if you want to implement a forward delete action, move the insertion position forward by one character then delete backwards:
// Move the text insertion position forward 1 character (Bewegen Sie sich ein Zeichen vorwärts)
textDocumentProxy.adjustTextPosition(byCharacterOffset: 1)
Es heißt, aber es ist eine ** Falle **. Ich denke, es ist schwer zu bemerken, also werde ich es teilen.
Wenn es auf diese Weise implementiert wird, verhält es sich so.
Es funktioniert gut bis zu "aiueo", aber es scheint seltsam, wenn man Kanji und Piktogramme erreicht.
Anscheinend zählt diese Methode "ein Zeichen" nach der Anzahl der Zeichen, wenn "utf16" verwendet wird. Überprüfen wir also die Zeichen in Fahrtrichtung, bevor wir sie ausführen, und dann "adjustTextPosition".
func getActualOffset(count: Int)->Int{
if count>0{
if let after = textDocumentProxy.documentContextAfterInput{
if after == ""{
return 1 //Wenn vor einem Zeichen ein Zeilenumbruch steht, nach==""Wird sein.
}
let left = after.prefix(count)
return left.utf16.count
}else{
return 1
}
}else if count<0{
if let before = textDocumentProxy.documentContextBeforeInput{
let right = before.suffix(-count)
return -right.utf16.count
}else{
return -1
}
}else{
return 0
}
}
let offset = getActualOffset(count: 1) //Holen Sie sich den genauen Versatz
textDocumentProxy.adjustTextPosition(byCharacterOffset: offset) //Lauf
Dies funktioniert wie vorgesehen.
Bitte seien Sie vorsichtig, da es sich um eine Falle handelt, die an einem schwer zu erkennenden Ort versteckt ist.
Recommended Posts