2010-03-11 12 views
16

Mam TableView z niestandardowymi TableCellViews, które ma UILabels i UIButtons na nim. po zapięciu jednego z przycisków Chcę wyświetlić "etykietkę" opisującą tekst przycisku.convertPoint: toView: Wydaje się nie działać

Prawie wszystko działa, z wyjątkiem sytuacji, gdy próbuję przekształcić współrzędne centrum UIButton na współrzędne rootView, które jest UIView.

Oto kod:

- (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 
} 

Jak rootViewPoint.x=390.5 kiedy jestem w widoku pionowym !!? Używając x z przycisku i y z rootViewPoint zbliżam się do tego, co powinno być, ale to tylko hack.

Czy ktoś widzi, co robię źle? Czy jest jakiś lepszy sposób?

Odpowiedz

49

Dzieje się tak, ponieważ konwertujesz punkt ze złego widoku. Właściwość center jest właściwie w układzie współrzędnych podglądu przycisku, cokolwiek to jest, więc po przekonwertowaniu go na rootView, musisz go przekonwertować. A więc:

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

To powinno dać ci to, czego szukasz.