gpt4 book ai didi

ipad - 将 uipopovercontroller 的箭头放置在 mapkit 上的注释点

转载 作者:行者123 更新时间:2023-12-01 06:32:14 25 4
gpt4 key购买 nike

我试图让弹出框出现在 map 工具包注释点处,但无法在注释 View 属性中找到“rect”以使用调用 uipopovercontroller 的 rect 方法。如果在 map 工具包上给出注释,如何找到合适的“框架”?

为了给保罗更多信息,这是我的尝试:我已经使用过:

- (void)mapView:(MKMapView *)mapView2 annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control{
NSLog(@"annotationView...");
MyGizmoClass *myGizmoClass= [MyGizmoClass sharedManager];
int choice = 0;
for (NSMutableDictionary *locationDictionary in [myGizmoClass searchResultsForResortLocation])
{
if([view.annotation.title isEqualToString:[locationDictionary objectForKey:@"name"]])
{

DetailViewTableStyleController *controller = [[DetailViewTableStyleController alloc] initWithlocationData:[[myGizmoClass searchResultsForResortLocation] objectAtIndex:choice] nibName:@"DetailViewTableStyle" bundle:[NSBundle mainBundle]];

controller.categoryCode = [locationDictionary objectForKey:@"category_code"] ;

//create a popover controller
popoverControllerDetail = [[UIPopoverController alloc] initWithContentViewController:controller];

// set contentsize
[popoverControllerDetail setPopoverContentSize:CGSizeMake(320,480)];

//present the popover view non-modal

[popoverControllerDetail presentPopoverFromRect:view.rightCalloutAccessoryView.frame inView:mapView2 permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

[controller release];
break;
}
choice = choice + 1;
}
}

然后...我在 map View 边缘的左上角看到了一个弹出窗口。

谁能告诉我为什么?我试图让它出现在 pin/annotationview 附近。

最佳答案

好的,

这是迄今为止我发现的唯一解决方法:

CGPoint annotationPoint = [mapView2 convertCoordinate:view.annotation.coordinate toPointToView:mapView2];
float boxDY=annotationPoint.y;
float boxDX=annotationPoint.x;
CGRect box = CGRectMake(boxDX,boxDY,5,5);
UILabel *displayLabel = [[UILabel alloc] initWithFrame:box];


[popoverControllerDetail presentPopoverFromRect:displayLabel.frame inView:mapView2 permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[displayLabel release];

这个不好的部分是我假装把它放在注释的 View 中。我只是获取注释 View 的 annotation.coordinate(MKMapKit 样式坐标)并将坐标转换为屏幕坐标。然后,我创建一个 uilabel(以在屏幕上获得具有框架功能的构造),并将其放置在注释 View 所在的位置。然后我告诉 popovercontroller 出现在那个框架位置。

这是踢球者。我没有将 uilabel 添加到 mapView2。一旦 popovercontroller 绘制了它自己,我就简单地释放它。

破解,但干净。

关于ipad - 将 uipopovercontroller 的箭头放置在 mapkit 上的注释点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com