2011-12-08 7 views
7

Ho una funzione di chat nella mia app e sto cercando di nascondere la tastiera trascinando il dito verso il basso proprio come si può nascondere la tastiera nell'app sms in IOS 5 .nascondi la tastiera trascinando il dito come l'app sms in iOS 5

ho sottoclasse UITableView, però, non appena inizia a scorrere non ho più ricevo chiamate a

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

mi chiedo come posso ottenere lo scorrimento e scoprire dove il dito è durante lo scorrimento in modo che se si inizia ad avvicinarmi alla tastiera posso iniziare a nasconderla.

Penso che questa è una funzionalità che molte persone vorranno, qualche idea su come realizzarla?

+0

per quanto ne so se la vista tabella non prendere in consegna il movimento di trascinamento, quindi tutti gli eventi touch successivi vengono inviati alla vista di scorrimento invece. Quindi è necessario implementarlo in una sottoclasse di 'UIScrollView', o forse in un suo delegato. –

+0

Sì, ci ho pensato, ma non ero sicuro di come sostituire il visualizzatore di scroll di tableview con la mia versione – odyth

+0

Spiacente, puoi ignorare il mio commento precedente. Non avevo idea che 'UITableView' fosse una sottoclasse di' UIScrollView'. Non ho mai visto una configurazione di visualizzazione a scorrimento simile prima. –

risposta

7

DAKeyboardControl è un codice sorgente con licenza MIT per quello che stai cercando.

+0

@odyth, questa è la risposta che dovresti volere. Stavo solo cercando di farlo da solo, e DAKeyboardControl è super facile da usare. una riga di codice (+ #import), e funziona come un fascino. –

+0

Questa è una libreria molto vecchia e inutile ora! – AsifHabib

2

UITableView eredita da UIScrollView, in modo da poter rilevare la posizione di scorrimento con metodi UIScrollViewDelegate come - (void)scrollViewDidScroll:(UIScrollView *)scrollView

+0

come si ottiene la posizione del dito dell'utente? – odyth

+0

Crea la tua sottoclasse di UITableView, implementa il metodo 'toccaesShouldBegin: withEvent: inContentView: 'di touchScopView:' per rilevare il punto di tocco, quindi controlla il movimento in 'scrollViewDidScroll:' per nascondere la tastiera o meno. – changx

3

mi aveva permesso questa funzione nella mia app, con l'aiuto di Daniel's DAKeyboardControl library. È possibile implementare lo stile iMessage tastiera nascondiglio acidità, con una sola riga di dichiarazione:

[self.view addKeyboardPanningWithActionHandler:^(CGRect keyboardFrameInView) { 
    // Move interface objects accordingly 
    // Animation block is handled for you 
}]; 
2

Fortunatamente in iOS 7 Apple ha aggiunto l'utile proprietà keyboardDismissMode su UIScrollView. Ora la tua app può comportarsi come Messaggi semplicemente modificando una singola proprietà sullo Storyboard o aggiungendo una singola riga di codice.

Questa proprietà utilizza il nuovo enum ScrollViewKeyboardDismissMode. I valori possibili per l'enumerazione sono i seguenti.

UIScrollViewKeyboardDismissModeNone 
UIScrollViewKeyboardDismissModeOnDrag 
UIScrollViewKeyboardDismissModeInteractive 

Ecco la proprietà storyboard fare respingere la tastiera a scorrimento

Problemi correlati