我有这个代码。在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"上。

旁注:如果只想覆盖其他元素,同时保持底部元素可交互,则可以将添加到覆盖元素。

07-24 09:49
查看更多