2016-06-16 42 views

Odpowiedz

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) 
     } 
    } 
} 

Jest przykładem menu wyboru tekstu, który zmienia tekst w UITextView na czerwono. changeToRedFunc może wykonać dowolną akcję.

Uwaga: To jest w Swift 3 (zapyta, czy chcesz go Swift 2.3)

Nadzieja to pomaga! Jeśli masz jakieś pytania, proszę zapytać! : D

+0

Dzięki, to było bardzo pomocne. Czy istnieje sposób, aby: 1. mieć moją akcję niestandardową pojawiać się tylko wtedy, gdy zaznaczony jest tekst 2. przejść do przodu listy działań (również przed działaniem "cut") 3. uzyskać tekst, który został wybrany – TomLisankie

+0

Po pewnych badaniach nie jestem pewien, czy możliwe są 1 i 2. 2 może być możliwe, ale wymagałoby to stworzenia własnego menu wyboru tekstu z najprawdopodobniej prywatnego jabłka APIS (niedozwolone). Jeśli chodzi o 3, edytowałem mój przykład, aby wydrukować wybrany tekst na konsolę. @Shaken_Earth – Ike10