uniapp的ios的uni-popup弹窗+软键盘+遮盖层滑动问题

2,294 阅读2分钟

弹窗与软键盘之间的间隔

安卓一般弹窗都没问题,主要就是ios问题,总结一下。

1700637526704.png

中间的空隙很麻烦去除的话,可以用uniapp的onKeyboardHeightChange方法。去监听软键盘的高度。代码贴在下面了(我咨询一个大佬的)

微信图片_20231121134549.png

微信图片_20231121134549_1.png 我把我写的代码也放在下面了。 当然你是运行不出来的。 重点:html中的属性里面是要添加fixed的,保证bottom生效,如果你的工具有限的话,那你就要用uniapp编译成h5,通过h5的调试去更改,因为没有h5软键盘不弹出,那就可以直接去找到fixed应该放在那个位置让这个窗口移动。在这层view设置浮动,底部跟软键盘的距离 js就是赋值嘛,css我的样式可以借鉴一下。

弹窗点击之后遮盖层可以滑动,导致下面的页面且还有留白。

用户如果不滑动肯定是能用的,但是如果滑动就会导致下面留白可以看见且滑动给大家体验感不好 留白先不用解决,只要能解决遮盖层滑动就可以解决留白(毕竟看不见,嘻嘻)

1700638594331.png

看了官网推荐:@touchmove.stop.prevent="disabledScroll" disabledScroll是随意定义的,废话少说,还是贴在下面。

<view v-if="show" class="sheet" :style="{bottom:inputBottom+'px'}" @touchmove.stop.prevent="disabledScroll"> <uni-popup></uni-popup> </view>

			disabledScroll() {
				return;
			},

有同学要问了,这要我怎么写啊,太少了吧,大道至简,我是这样写的但是要踩坑的一点是: @touchmove.stop.prevent="disabledScroll"这个是要绑定遮盖层的view,基本都是页面的第一个view或者你业务的那个遮盖层的view,,我的代码是在外层view,如果你不了解的话可以多在其他的view试试吧。

弹窗里面有滑动,但是像上层那样写可能滑动都被禁止了(根据业务哦)。

可以用@touchmove.stop 我直接贴了,这个也是禁止滚动穿透,但是具体我给忘了,因为官方给的还带还是

 @touchmove.stop.prevent="moveHandle"
			<view class="popup-content">
				<view class="content">
					<view class="con1">加入收藏</view>
					<scroll-view scroll-y="true" class="switem" @touchmove.stop>
						<u-radio-group class="con2" v-model="value">
							<u-radio @change="radioChange" v-for="(item, index) in arr" :key="index" :name="item.id"
								:disabled="item.disabled" class="radioLine" size="40rpx">
								{{item.name}}
							</u-radio>
						</u-radio-group>
					</scroll-view>
					<view class="con3">
						<view class="con3-0" @click="quitCon">取消</view>
						<view class="con3-1" @click="confirm">确认</view>
					</view>
				</view>
			</view>
		</uni-popup>

这个是html,没有js。你就用吧,一用一个不吱声。

浅浅记录一下。