2010-03-11 2 views
16

У меня есть TableView с пользовательскими TableCellViews с UILabels и UIButtons на нем. При нажатии одной из кнопок я хочу показать «подсказку», описывающую текст кнопки.convertPoint: toView: Кажется, что не работает

Больше всего работает, кроме тех случаев, когда я пытаюсь преобразовать центральные координаты UIButton в координаты rootView, который является UIView.

Вот код:

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

Как rootViewPoint.x=390.5, когда я нахожусь в портретном !!? Используя x от кнопки и y от rootViewPoint, я приближаюсь к тому, что должно быть, но это всего лишь взломать.

Кто-нибудь видит, что я делаю неправильно? или есть лучший способ?

ответ

49

Это потому, что вы конвертируете точку из неправильного представления. Свойство center фактически находится в системе координат надстройки кнопки, независимо от того, что происходит, поэтому, когда вы конвертируете его в свой rootView, вы должны преобразовать его оттуда. Таким образом:

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

Это должно дать вам то, что вы ищете.

Смежные вопросы