2015-06-08 14 views
5

Come sappiamo, la tastiera originale in iOS può cancellare intere parole tenendo premuto il pulsante di cancellazione (⌫) per un periodo di tempo prolungato.
Quindi, come possiamo utilizzare la stessa funzionalità per le tastiere personalizzate in Swift, iOS 8?Come possiamo usare una pressione lunga per cancellare parole intere, per tastiere personalizzate in iOS 8?

Nota:
Attualmente sto usando proxy.deleteBackward() per cancellare le lettere, e l'utilizzo di:

var gesture = UILongPressGestureRecognizer(target: self, action: "longPressed:") 
gesture.minimumPressDuration = 1.0 
button.addGestureRecognizer(gesture) 

quando si preme il pulsante per una maggiore quantità di tempo.

Grazie!

risposta

1

Non sono sicuro di come si sarebbe in grado di farlo tramite il riconoscimento dei gesti.

Il comportamento tastiera originale è,

  • Quando si preme il pulsante e si tiene premuto per iniziale X-tempo intervallo, si continua l'eliminazione all'indietro.
  • Quando il pulsante viene tenuto premuto dopo l'intervallo di tempo X iniziale, inizia a eliminare le parole anziché solo i caratteri.

Dopo aver premuto il pulsante per la prima volta, è consigliabile continuare a chiamare la funzione di eliminazione e continuare a notare se è trascorso "X-time-interval". Pseudocode sarebbe

var startTime: NSDate = NSDate() 
var timer: NSTimer? 
func deleteButtonPressed(deleteButton: UIButton) { 
    startTime = NSDate() 
    timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: Selector("delete"), userInfo: nil, repeats: true) 
} 

func delete() { 
    if !deleteButton.highlighted { 
     timer.invalidate() 
     timer = nil 
     return 
    } 

    if ((currentNSDate - startTime) < "X-time-Interval") { 
     // delete backward 
    } else { 
     /* figure out last space character in text and create NSRange 
     then 
     mytextView.text deleteCharactersInRange:theRange 
     set new text */ 
    } 
} 
+0

ma sto cercando di creare un'estensione di tastiera personalizzata che può essere utilizzata in altre applicazioni (in tutto il sistema). Come funziona 'mytextView.text deleteCharactersInRange: theRange'? – Arefly

+0

DeleteCharactersInRange è una funzione per il testo. Quindi dovrebbe funzionare. Se la tua tastiera funziona in modo universale dovrebbe sapere quale campo testo/testo mostra che sta modificando. –

Problemi correlati