我有这个代码。在android上做得很好,在IOS中我无法更改地图。
<GridLayout class="page">
<GridLayout columns="*" rows="*,auto,auto">
<StackLayout col='0' row='0'>
<MapView class="map" (mapReady)="onMapReady1($event)" (markerSelect)="onMarkerSelect($event)"
(cameraChanged)="onCameraChanged($event)"></MapView>
</StackLayout>
<StackLayout class="input-field" col='0' row='0' style="margin-top: 10">
<GridLayout columns="*,*" rows="*">
<StackLayout col='0' row='0'>
<DropDown itemsTextAlignment="center" itemsPadding="10" title="Comune di:" hint="Comune di:"
[items]="citiess" (selectedIndexChanged)="onchangecity($event)" (opened)="onopen()"
(closed)="onclose()"
style="background-color: rgba(255, 255, 255, 0.918); border-color:slategray; padding: 3%;
font-size: 18; color: rgb(70, 70, 70); size: 14px; margin-left: 6%; margin-top: 0.7%; border-style: solid; text-align: center;">
</DropDown>
</StackLayout>
</GridLayout>
</StackLayout>
</GridLayout>
</GridLayout>
当我将DropDown放到GridLayout之外时,可以更改地图,但是我想将一个调用dropdown的按钮放在地图上。
你有什么主意吗?
最佳答案
您的StackLayout
覆盖在整个MapView
上。在iOS中,所有最上方的视图都会阻止事件在下方传播。因此,即使您未显式监听StackLayout
之后,仅MapView
之后最顶层的DropDown
都会收到您的点击/拖动事件。
您只需要具有MapView
元素的确切宽度和高度即可,即可使用边距将其占据并对齐。这样可以防止其他任何东西覆盖在isUserInteractionEnabled="false"
上。
旁注:如果只想覆盖其他元素,同时保持底部元素可交互,则可以将添加到覆盖元素。