我找不到将我的buttonView(只是一个Button)放在地图顶部的方法,所以我可以点击它。 在另一个更复杂的设置中,按钮会以某种方式在顶部打开,我可以点击它,但这是运气,并非设计使然。如何在地图上获取我的buttonView以便可以点击它?
请注意,我认为问题可能是我的buttonView在某个地图图层“下方”,因此地图捕获了点击事件,而没有将它们传递给我的buttonView。
Xcode 12 beta-3,mac catalina,目标ios 14。
@helper GetTreeView(List<MVCTreeview.SiteMenu> siteMenu, int parentID){
foreach (var i in siteMenu.Where(a=>a.ParentMenuID.Equals(parentID)))
{
<li>
@{var submenu = siteMenu.Where(a => a.ParentMenuID.Equals(i.MenuID)).Count();}
@if (submenu > 0)
{
<span class="collapse collapsible"> </span>
}
else
{
<span style="width:15px; display:inline-block"> </span>
}
<span>
<a href="@i.NavURL">@i.MenuName</a>
</span>
@if (submenu > 0)
{
<ul>
@Treeview.GetTreeView(siteMenu,i.MenuID)
@* Recursive Call for Populate Sub items here*@
</ul>
}
</li>
}
}
答案 0 :(得分:0)
只需将它们包装在 ZStack 中:
ZStack {
Map(coordinateRegion: $region, annotationItems: cityAnno){...}
Button(action: {print("----> buttonView action")}) {...}
}
答案 1 :(得分:0)
您可以在 Just Vstack 上获得 onTapGesture。通过替换 MapViewer 的主体尝试以下代码。
var body: some View {
Map(coordinateRegion: $region, annotationItems: cityAnno) { city in
MapAnnotation(coordinate: city.coordinate) {
VStack {
Text(city.title ?? "")
Image(systemName: "dot.circle.and.cursorarrow")
}
.foregroundColor(.red).scaleEffect(1.2)
.frame(width: 111, height: 111)
.onTapGesture {
print("Clicked")
}
}
}
}