Immagina la tua tastiera. Immagina di mettere un dito in basso di un tasto, poi (tenendo premuto) muovi il dito fino a un altro tasto sulla tastiera. Ora, immagina che ciascun tasto sulla tastiera sia un UIButton
. quando si tiene premuto il dito sul tasto attuale, questo tasto (UIButton
) è evidenziato. Quindi, quando l'utente passa a un'altra chiave, la prima chiave non viene più evidenziata e il tasto corrente premuto viene evidenziato.Come passare dall'uso di un UIButton a un altro mentre si tiene premuto il dito?
Ora, ho una griglia 6 x 8 di UIButton ogni 53 x 53 pixel. Quindi, ho 48 UIButtons
. Voglio replicare questo tipo di idea. Il pulsante su cui è posizionato il dito dell'utente avrà un'immagine leggermente più chiara (per apparire selezionata come), e tutti gli altri non saranno leggermente più chiari.
Qui è la mia idea di come fare per questo,
1) Creare tutto 48 UIButtons
in viewDidLoad
. Aggiungi l'immagine più leggera a UIControlStateHighlighted
per tutti UIButtons
.
2) Aggiungi una sorta di target
per touchUpOutside
che in qualche modo rende il pulsante corrente non evidenziato e non utilizzabile. (forse impostare l'evidenziato e userInteractionEnabled
su no). Ma come posso dire che il prossimo pulsante debba essere usato? E come posso dire che voglio lo specifico UIButton
che le dita degli utenti sono sotto per essere evidenziato e in uso per rilevare gesti e cose.
Inoltre, questo metodo touchUpOutside
potrebbe non funzionare perché tutti i pulsanti sono uno accanto all'altro e penso che si debba trascinare molto indietro per eseguire questo touchUpOutside
.
È anche importante notare che i pulsanti non sono disposti in righe e colonne uguali. A volte un pulsante sarà in realtà un UIImage
ma sembra un UIButton
. Quindi, fare una sorta di enumerazione rapida confrontando i frame per qualche motivo non funzionerà.
Descrivete alcuni comportamenti di basso livello (il fatto che se premete e trascinate il dito su un altro pulsante), ma non descrivete il problema più ampio che state cercando di risolvere, in modo che risponda un po 'alla vostra domanda difficile. Cosa stai cercando di fare? Basta rilevare il tocco in un pulsante e ritoccare in un altro? O un'intera serie in uno schema di digitazione simile a Swype? La risposta proposta potrebbe dipendere da ciò che stai cercando di fare. – Rob
Inoltre, non capisco il tuo ultimo punto sull'enumerazione non veloce dei frame non funzionante (perché se sei preoccupato per diversi tipi di sottoview, verificherai "isKindOfClass" per sapere qual è il comportamento giusto). Vedi la mia risposta. – Rob
Suppongo che intendessi UIImageView invece di UIImage – WolfLink