Ich muss dem Bearbeitungsmenü eine benutzerdefinierte Aktion hinzufügen, die angezeigt wird, wenn ein Benutzer Text in einem UITextView in iOS auswählt. Wie mache ich das? (Swift-Code ist bevorzugt).Wie füge ich dem Bearbeitungsmenü für die Textauswahl in iOS eine benutzerdefinierte Aktion hinzu?
Q
Wie füge ich dem Bearbeitungsmenü für die Textauswahl in iOS eine benutzerdefinierte Aktion hinzu?
5
A
Antwort
8
class ViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
addCustomMenu()
}
func addCustomMenu() {
let printToConsole = UIMenuItem(title: "Print To Console", action: #selector(printToConsole))
UIMenuController.shared().menuItems = [printToConsole]
}
func printToConsole() {
if let range = textView.selectedTextRange, let selectedText = textView.text(in: range) {
print(selectedText)
}
}
}
Dies ist ein Beispiel für den Menüpunkt Textauswahl, die den Text in einem UITextView
zu rot ändert. changeToRedFunc
kann jede gewünschte Aktion ausführen.
Hinweis: Dies ist in Swift 3 (fragen Sie, wenn Sie es in Swift 2.3 wollen)
hoffe, das hilft! Wenn Sie irgendwelche Fragen haben, zögern Sie nicht zu fragen! : D
Danke, das war sehr hilfreich. Gibt es eine Möglichkeit zu: 1. Lassen Sie meine benutzerdefinierte Aktion nur erscheinen, wenn der Text ausgewählt ist. 2. Bewegen Sie sich an den Anfang der Liste der Aktionen (aka vor der Aktion "cut") 3. Rufen Sie den Text, der ausgewählt wurde – TomLisankie
Nach einigen Recherchen bin ich mir nicht sicher, ob 1 und 2 möglich sind. 2 möglich, aber es würde erfordern, dass Sie Ihr eigenes Textauswahlmenü von dem wahrscheinlich privaten Apple APIS erstellen (nicht erlaubt). Was 3 betrifft, habe ich mein Beispiel bearbeitet, um den ausgewählten Text auf die Konsole zu drucken. @ Shaken_Earth – Ike10