2014-09-01 15 views
7

Quando sto sviluppando iOS 8 Oggi Extension, ho impostato un UITableViewController come il principale vista controller.And Ho incontrato questo problema:UITableView: fare clic nella zona vuota non si innesca didSelectRowAtIndexPath

Quando ho init UITableViewCell utilizzando initWithStyle: UITableViewCellStyleDefault in cellForRowAtIndexPath, l'intera area di una cella può attivare normalmente DidSelectRowAtIndexPath . Tuttavia, quando si imposta UITableViewCellStyle su UITableViewCellStyleValue1, UITableViewCellStyleValue2 o UITableViewCellStyleSubtitle, è possibile attivare solo didSelectRowAtIndexPath facendo clic su detailTextLabel o sull'area di imageView. Fare clic su altre aree vuote non risponderà.

Ho provato a impostare self-delegato di tableview, impostare detailTextLabel e imageView's setUserInteractionEnabled: false in cellForRowAtIndexPath e tutti questi non funzionano. qualcuno ha qualche idea al riguardo?

P.S. Non sto usando lo storyboard o il file xib, solo il codice.

Ho trovato un medesimo problema su Android: I'd like to click anywhere (blank area) in a list view

risposta

8

ho incontrato io stesso durante il tentativo di visualizzare UITableView all'interno del TodayView. Anche se non so perché accada, ho scoperto che questo si verifica solo quando lo sfondo UITableViewCell è clearColor. Se si imposta lo sfondo su un altro colore, verrà chiamato didSelectRowAtIndexPath. Tuttavia, ecco una soluzione rapida: aggiungi UILabel per estendere su tutta l'area della cella contentView e il metodo delegato verrà chiamato ogni volta. Ad ogni modo, sembra un insetto.

+0

Grazie, ha funzionato. Alla fine ho aggiunto un colore di sfondo quasi trasparente per risolvere questo problema in modo non elastico. Dovrebbe essere un bug iOS perché se imposto l'alpha del bg color a 0.002 funziona, ma 0.001 non funziona. – CodeRain

Problemi correlati