2013-01-17 19 views
6

Problema:UIButton in costume UITableViewCell smettono di funzionare dopo la rotazione

ho usato UITalbeViewCell personalizzato che contiene due pulsanti, che funzionano bene con orientamento verticale. Dopo la rotazione, smettono tutti di rispondere alla funzione di ritocco pulsante interno. Alcune persone hanno problemi che i loro pulsanti non possono disegnare correttamente dopo la rotazione. Il mio sembrava buono dato che i pulsanti sono visualizzati nei punti giusti dopo la rotazione, ma non rispondono più alla pressione del pulsante.

Per questa visualizzazione specifica nella mia app, ho utilizzato un UIPageController per implementare più pagine in una vista e per la vista (denominarla per ora EmbeddedView) inclusa nel controller di scorrimento della pagina, c'è un UITableView che contiene UITableViewCell personalizzato . La cella di visualizzazione tabella personalizzata ha solo un pennino, il proprietario del file è EmbeddedView.

in EmbeddedView:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
/*===== This is the most memory efficient way of creating table view cells =====*/ 

static NSString *CellIdentifier = @"CellIdentifier"; 

CustomTableViewCell *cell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) 
{ 
    [[self customTableCellNib] instantiateWithOwner:self options:nil]; 
    cell = [self customTableCell]; 
    [self setCustomTableCell:nil]; 
    } 
} 

Quello che ho cercato:

ho creato un altro file pennino per la cella di vista tabella personalizzata e utilizzati in -cellForRowAtIndexPath(), ho controllato l'orientamento e creare dinamicamente la cella usando pennino diverso, senza fortuna.

Ho aggiunto [tableview reloadData] in -didRotateFromInterfaceOrientation(), non ha fatto nulla.

Qualcuno potrebbe indicarmi la direzione giusta per favore? Qualsiasi aiuto è apprezzato.

Questa è la tabella di vista ridimensionamento automatico in IB:

enter image description here

Si guarda a destra, ma i pulsanti non funzionano

enter image description here

Aggiornamento: Ho provato a specificare diverse maschere ridimensionamento automatico a IB per la vista tabella e i risultati sono visualizzati di seguito:

< 1>

enter image description hereenter image description here

enter image description here

< 2>

enter image description hereenter image description here

enter image description here

< 3>

enter image description here

enter image description here

< 4>

enter image description here

enter image description here

+0

è sufficiente aggiungere un tocco all'interno di Event of UIbutton nel metodo cellForRowAtIndexPath(), quindi controllare. –

+0

@DixitPatel: Grazie amico, ma non cambia nulla. –

+0

Il pulsante viene premuto visivamente? Quello che voglio dire è che vedi lo stato "in basso" del pulsante cambia quando lo premi? (dovrebbe diventare scuro di default). – nebs

risposta

4

Sono state prese come il superview viene ridimensionata?

Controllare se il superview ha 'clip to bounds' controllato. Se non lo controlla, Questo farà sì che la vista ritagli il suo contenuto in modo da vedere se sta ridimensionando ok.

Direi che il superview non sta dimensionando correttamente e per questo motivo anche gli eventi di tocco non vengono recapitati correttamente.

EDIT - Quindi questa è stata la punta che potrebbe lasciare il PO raggiungere la soluzione:

Cosa faccio di solito in casi come di un comportamento imprevisto in ridimensionamento e tale è quello di cambiare ogni vista nella gerarchia ad un colore diverso, ben riconoscibile. In questo momento hai vista A e vedi B con lo stesso colore di sfondo (o chiaro) e non vedi se la vista B sta ridimensionando bene. In bocca al lupo.

+0

Ciao Fabio. 'Clip to bounds' significa 'clip subviews'? Poiché non riesco a trovare la proprietà 'clip to bounds' nello storyboard. Ho un problema simile In portrait la tableview funziona bene, ma in landscape la metà destra della tableview non riconosce i tocchi - né la scrollview né il pulsante e altri elementi di tableviewcell. –

+1

@RaviSisodia: Sì. Potresti avere qualcosa in cima alla tua vista tabella che sta prendendo gli eventi touch. Prova l'app di rivelazione o l'app di scintilla. Sarai in grado di ispezionare tutta la gerarchia delle viste e vedere cosa sta succedendo. –

+0

Oh. Fabio, ho dimenticato di ringraziarti. Grazie uomo. –

Problemi correlati