7

It may be a dumb question, but I can't find an answer to this ...

I have an UIScrollView and inside a number of UIButtons. When I press a button, I want to know the screen location of the button. If I use button.frame it gives me the position inside UIScrollView, which is normal.

How can I find x and y relative to screen of the button pressed?

Thanks in advance.

CristiC
  • 22,068
  • 12
  • 57
  • 89

2 Answers2

11

Your objection was right- instead, use

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view

from UIView, like

[button.superview convertPoint:button.frame.origin toView:nil];

Not tested, but I believe that should work. Also see iPhone - Get Position of UIView within entire UIWindow

Community
  • 1
  • 1
Rob Lourens
  • 15,081
  • 5
  • 76
  • 91
  • 5
    If I scroll horizontally the UIScrollView, I may have button.frame.origin.x = 1017 or something, so your example will not be correct. – CristiC Apr 11 '11 at 19:31
7

For swift:

let pointXY:CGPoint = (button.superview?.convert(button.frame.origin, to: nil))!
print("button pointXY: \(pointXY.debugDescription)")
lenooh
  • 10,364
  • 5
  • 58
  • 49