2010-03-11 11 views
16

Tengo un TableView con TableCellViews personalizado que tiene UILabels y UIButtons en él. cuando se graba uno de los botones Quiero mostrar una "información sobre herramientas" que describe el texto del botón.convertPoint: toView: no parece estar funcionando

Casi todo funciona, excepto cuando trato de convertir las coordenadas del centro del UIButton a las coordenadas del rootView que es un UIView.

Aquí está el código:

- (void) fancyLabelButtonPressed: (UIButton *) button { 
    CGPoint btnPoint = button.center; // x=200.5 y=27.5 
    CGPoint rootViewPoint = [button convertPoint:btnPoint toView:rootView]; 
    // rootViewPoint -> x=390.5 y=197.5 
    CGPoint pointToUse = CGPointMake(btnPoint.x +20, rootViewPoint.y - 23); // Hack to get it close 
} 

¿Cómo puede rootViewPoint.x=390.5 cuando estoy en la vista vertical !!? Al usar la x del botón y la y del rootViewPoint me acerco a lo que debería ser, pero es solo un truco.

¿Alguien ve lo que estoy haciendo mal? ¿O hay un mejor camino?

Respuesta

49

Esto se debe a que está convirtiendo el punto de la vista incorrecta. La propiedad center está realmente en el sistema de coordenadas de la supervista del botón, sea lo que sea, de modo que cuando la convierta a su vista raíz, debe convertirla desde allí. Entonces:

rootViewPoint = [[button superview] convertPoint:btnPoint toView:rootView]; 

Eso debería darle lo que está buscando.

Cuestiones relacionadas