31

プログラムで 1 つの scrollView とその中にいくつかのボタンを作成します。任意のボタンをクリックすると、ポップオーバーを表示する必要があります。

self.view での私のボタンの原点は (100,11) のようで、scrowView (9,11) 内にあり、scrowView は self.view のどこかにあります。ポップオーバーは (9,11) に表示されますが、正しいものは (100,11) になります。convert を使用しようとしましたが成功しませんでした。

-(IBAction)showPopover:(id)sender{
//... implemented popover above

//Wrong Origin:
NSLog(@"wrong x:%f y:%f",[sender frame].origin.x, [sender frame].origin.y);

//Transform to correct
CGRect frame = [self.view convertRect:[sender frame] toView:nil];

//Shoulf be right, but is not...
NSLog(@"new x:%f y:%f",frame.origin.x, frame.origin.y);
}

誰か助けてくれませんか?

4

2 に答える 2

83

ビューのフレームはすでにスーパービューの座標系にあります。したがって、セットアップに次がself.view含まscrollviewれている場合sender

CGRect frame = [sender.superview convertRect:sender.frame toView:self.view];

// or, better:

CGRect frame = [sender convertRect:sender.bounds toView:self.view];
于 2012-07-27T22:39:30.483 に答える