iOS 7.0 La interacción del usuario está deshabilitada para los controles dentro de UITableView backgroundView

Tenía una vista personalizada establecida como vista de background para UITableview. Lo utilizo para realizar algunas acciones cuando tableview está en blanco.
Tenía algunos botones a la vista y una acción está asociada con cada button
Para iOS <7, la acción se llama correctamente en los botones dentro de la vista de background. Pero para iOS> 7, las acciones configuradas en botones en backgroundView no reciben llamadas. Esta interacción parece deshabilitada en backgroundView
¿Es un problema con iOS 7. ¿Alguno más se enfrenta al mismo problema? Vista de fondo personalizada UITableview

Hay una vista UITableViewWrapperView sentada frente a la vista de background que intercepta las interacciones. ¿No puede usar la propiedad tableHeaderView la tabla en tableHeaderView lugar?

En primer lugar, este es un mal enfoque para agregar elementos que se pueden tocar a la vista de background de tableView. En segundo lugar, no estoy seguro de que mi solución funcione para su caso.

Intente implementar los siguientes methods en su class de BackgroundView:

 - (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event { UIView* hitView = [super hitTest:point withEvent:event]; if (hitView != nil) { [self.superview bringSubviewToFront:self]; } return hitView; } - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event { CGRect rect = self.bounds; BOOL isInside = CGRectContainsPoint(rect, point); if(!isInside) { for (UIView *view in self.subviews) { isInside = CGRectContainsPoint(view.frame, point); if(isInside) break; } } return isInside; } 

Al anular esos methods, está haciendo todas las subvenciones de backgroundView, así como también de backgroundView, sensible al tacto.

¡Aclamaciones!


ACTUALIZAR:

Lo sentimos, esto no funcionará. BackgroundView se encuentra detrás de la vista con las celdas en sí, por lo que no recibirá toque.

Según lo especificado en mi comentario, este es un problema conocido en iOS7, vea el radar ( http://openradar.appspot.com/14707569 ).

Pero mi solución o solución a esto fue implementar una vista 'proxy' en la parte superior de la tabla que ofrece un protocolo para reenviar el hitTest a un delegado que implementa ese protocolo.

EventFixBackrgoundView.h

 @protocol EventFixBackrgoundViewDelegate <NSObject> - (UIView *)eventFixHitTest:(CGPoint)point withEvent:(UIEvent *)event; @end @interface EventFixBackrgoundView:UIView @property (nonatomic, weak) id <EventFixBackrgoundViewDelegate> delegate; @end 

EventFixBackrgoundView.m

 #import "EventFixBackrgoundView.h" @implementation EventFixBackrgoundView - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { if (self.delegate && [self.delegate respondsToSelector:@selector(eventFixHitTest:withEvent:)]) { return [self.delegate eventFixHitTest:point withEvent:event]; } return [super hitTest:point withEvent:event]; } @end