2015-07-28 20 views
12

Ho creato un UITableViewCell personalizzato denominato "SwitchCell" con un interruttore. Solo in iOS9, utilizzando Xcode 7 beta, la vista Contenuto nella cella si trova in cima allo switch. (Vedi screenshot di vista gerarchia si può chiaramente vedere che la vista contenuto della cella è in cima alle altre viste..): enter image description hereiOS9 - UITableViewCellContentView sta coprendo i controlli all'interno della cella

Così tutti i tocchi al UISwitch sono intercettati, e l'IBAction non si attiva . In iOS 8, questo non è un problema. Vedi lo screenshot per il simulatore iOS 8.4. È possibile vedere che non vi è alcuna visualizzazione del contenuto in cima ai controlli: enter image description here

Qualcuno ha avuto questo problema? Ho provato a rifare il NIB da zero, ma lo stesso risultato si verifica.

My NIB è una vista di dimensioni libere con Nessuna barra di stato. Ha due punti vendita: uno per UILabel, uno per UISwitch.

MODIFICA: si prega di verificare la risposta qui sotto che chiede di verificare che la vista radice della cella non sia solo un UIView ma un UITableViewCell. Questo problema potrebbe anche essere un effetto collaterale di questo.

risposta

11

Dopo ulteriori indagini e la ricerca, ho trovato la mia soluzione qui: Button in UITableViewCell not responding under ios 7

Che ha risolto il tutto per me è stato: cell.contentView.userInteractionEnabled = NO;

Ciò impedisce alla visualizzazione del contenuto della cella di assumere il controllo degli eventi di tocco, anche se è sopra le altre visualizzazioni.

Questo problema non si verificava solo su iOS9, ma anche su iOS7. In iOS8, la visualizzazione del contenuto era dietro i controlli.

+3

Funziona qui su iOS 9.1 developer preview. Ad ogni modo, non ha alcun senso, il contenuto è LA PARENTEA VISTA SULLA GERARCHIA, non dovrebbe essere in cima alle altre visualizzazioni. – edulpn

+0

Ho avuto lo stesso effetto con Xcode 7.1.1. Mi chiedo perché UITableViewCellContentView sia in cima a tutto in quella cella. – snoersnoer

2

Il problema può essere nel file .xib della cella. Quando crei cella in .xib separato, assicurati di trascinare UITableViewCell su tela, non UIView.

1

Ho riscontrato questo problema durante il riutilizzo di una cella come .xib. Non mi ero reso conto, ma quando ho creato lo xib la vista di default che è stata creata era in effetti una UIView e non una UITableViewCell. Sembra che a un certo punto UIKit aggiunga la vista del contenuto sopra i miei altri elementi e quindi interrompa determinati eventi (ad esempio, gli eventi di tocco).

Ho risolto questo aprendo il file xib e trascinando un UITableViewCell nell'area di disegno e copiando i miei elementi dell'interfaccia utente dalla vecchia visualizzazione alla nuova cella.

Successivamente, impostazioni aggiuntive sono state rese disponibili anche nell'ispettore attributi che corrispondevano a quelle per un UITableViewCell.