2011-01-19 17 views
11

Sembra che io stia sempre combattendo con UIAlertView per farlo fare ciò che voglio. Ho finito combattendo - ci sono dei sostituti UIAlertView robuste con le seguenti caratteristiche, o avrò bisogno di scrivere il mio ?:Sostituzione UIAlertView

  • possibilità di personalizzare l'avviso-view dimensioni/posizione
  • capacità di cambiare il disposizione dei pulsanti (stacked vs side-by-side) capacità
  • per chiedere agli utenti ingresso tramite UITextField o UITextView
  • ridimensionamento/riposizionamento comportamento quando la tastiera appare
  • capacità di avere un'UITextView per 0.123.testo scorrevole
  • copia pixel-perfect di UIAlertView per visualizzazione di base
  • idealmente interfaccia compatibile con UIAlertView - vale a dire si tratta di un drop-in-sostituzione.

Ho trovato alcuni post di blog e stackoverflow che implementano le personalizzazioni su un UIAlertView - questo NON è quello che voglio. Né voglio una guida su come implementare un AlertView personalizzato - So come, voglio solo trovarne uno che sia già gestito dalla comunità. Voglio una sostituzione di base che sia sicura per l'invio di App Store e a prova di futuro contro le modifiche di UIAlertView (sì, sono stato bruciato ...)

Si prega di rispondere con i commenti se si hanno suggerimenti per altre caratteristiche desiderabili.

+0

@skaffman: come mai hai rimosso il tag iphone-ui? – TomSwift

+3

Forse perché in realtà non è un tag usato (0 domande) e quindi non aggiungerebbe nulla? –

risposta

17

Rispondere alla mia domanda.

Ho cercato in alto e in basso per un progetto UIAlertView prefabbricato che offriva le funzionalità che stavo cercando. Sono sicuro che esistano - ho visto app con ottimi avvisi. I loro autori non devono condividere, il che è assolutamente soddisfacente, capisco.

Così ho scritto il mio. TSAlertView è un'implementazione a terra di una vista di avviso modale che è interfacciabile con UIAlertView. In termini di aspetto visivo, mentre non è una copia perfetta per i pixel, si avvicina molto. Le caratteristiche che offre sono fondamentalmente ciò che ho descritto nella domanda iniziale:

  • possibilità di impostare la visualizzazione di larghezza e max-altezza della vista avviso. Questo mi consente di avere avvisi più belli su iPad.

  • possibilità di specificare il layout dei pulsanti (impilati rispetto side-by-side), anche se ci sono solo due pulsanti. Questo mi ha sempre infastidito con UIAlertView: se avessi due pulsanti, erano sempre posizionati uno accanto all'altro. Un grosso problema se il testo del pulsante non si adattava.

  • possibilità di richiedere agli utenti l'immissione tramite UITextField. Di tanto in tanto ti serve solo un modo veloce e sporco per richiedere all'utente di inserire qualcosa.

  • comportamento di ridimensionamento/riposizionamento quando viene visualizzata la tastiera. (succede quando si richiede l'input dell'utente)

  • possibilità di avere un UITextView per il testo scorrevole.È possibile impostare in modo esplicito questa opzione anziché fare affidamento su UIAlertView per scambiare un UITextView per un testo lungo.

  • vicino alla copia pixel-perfect di UIAlertView per la visualizzazione di base.

  • supporto per sfondi personalizzati

  • è interfaccia compatibile con UIAlertView - vale a dire si tratta di un drop-in-sostituzione.

Ho utilizzato una manciata di grandi progetti open source nel mio codice nell'ultimo anno. I miei due preferiti sono MBProgressHUD e MGSplitViewController, ciascuno ospitato su github. Ho deciso di condividere TSAlertView nello stesso modo.

https://github.com/TomSwift/TSAlertView

L'implementazione iniziale ha sicuramente alcuni bug. Non l'ho ancora usato in un progetto di spedizione, ma lo sto utilizzando nel mio progetto corrente per essere completato in poche settimane. Se vuoi provare a usarlo da solo, sentiti libero. Pubblica eventuali problemi su github, o meglio ancora, invia una correzione.

Divertiti!

Ecco alcuni screenshot che mostrano 1) 2 impilati pulsanti 2) capacità ingresso 3) larghezza esplicita impostazione

showing 2 stacked buttons hereshowing input capabilityshowing wide-layout

+1

Ehi TomSwift, grazie per questo grande progetto. Stavo per iniziare un progetto del genere fino a quando non sono arrivato su TSAlertView. Veramente cool. Ora lo sto usando in una delle mie app. ;-) –

+0

Questo è sorprendente. Grazie per una sostituzione open source eccellente e facile da usare per qualcosa che è più difficile di quanto non lo sia in iOS. – buildsucceeded

0

Check out Smart Alert View, è open-source.

+0

grazie per il link. Ho avuto paura di questo quando ho scansionato il codice e ho trovato questo: - (void) ResizeAlertView: (UIAlertView *) alertView { \t Altezza CGFloat = view_.frame.size.height + 110; \t \t alertView.frame = CGRectMake (15.0f, (460 altezza)/2, 300.0f, altezza); } – TomSwift

+0

inoltre, la mia preferenza è per qualcosa non derivato da UIAlertView. – TomSwift

+0

Dovrai costruire la tua implementazione di un UIAlertView (che è più un incubo che personalizzarne uno), o semplicemente personalizzarne uno, non è così difficile come ti aspetteresti. – WrightsCS