2010-03-11 23 views
16

Tôi có một TableView với TableCellViews tùy chỉnh có UILabels và UIButtons trên đó. khi một trong các nút được ghi âm Tôi muốn hiển thị "chú giải công cụ" mô tả văn bản của nút.convertPoint: toView: Có vẻ như không hoạt động

Hầu hết mọi thứ đều hoạt động ngoại trừ khi tôi cố chuyển đổi tọa độ trung tâm của UIButton thành tọa độ của rootView vốn là UIView.

Đây là mã:

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

Làm thế nào có thể rootViewPoint.x=390.5 khi tôi đang ở trong gương điển hình xem !!? Bằng cách sử dụng x từ nút và y từ rootViewPoint tôi nhận được gần với những gì nó nên được nhưng nó chỉ là một hack.

Có ai nhìn thấy những gì tôi đang làm sai không? đây có phải là cách tốt hơn không?

Trả lời

49

Điều này là do bạn đang chuyển đổi điểm từ chế độ xem sai. Thuộc tính center thực sự nằm trong hệ thống tọa độ của trình giám sát của nút, bất kể đó là gì, vì vậy khi bạn chuyển đổi nó thành rootView, bạn phải chuyển đổi nó từ đó. Vì vậy:

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

Điều đó sẽ cung cấp cho bạn những gì bạn đang tìm kiếm.

Các vấn đề liên quan