From fd1520952c180dc15ec28319dae93ed666c8943e Mon Sep 17 00:00:00 2001 From: litian <C21AF165> Date: 星期一, 15 四月 2024 16:14:49 +0800 Subject: [PATCH] ios --- packageDomain/pages/teacherCertification/index.wxml | 8 +- packageDomain/pages/sampleBookList/applicationForm/index.js | 69 +++++++++++++++++++++++ packageDomain/pages/teacherCertification/index.js | 68 ++++++++++++++++++++++ packageDomain/pages/sampleBookList/applicationForm/index.wxml | 8 +- 4 files changed, 145 insertions(+), 8 deletions(-) diff --git a/packageDomain/pages/sampleBookList/applicationForm/index.js b/packageDomain/pages/sampleBookList/applicationForm/index.js index baf669e..e4cd26a 100644 --- a/packageDomain/pages/sampleBookList/applicationForm/index.js +++ b/packageDomain/pages/sampleBookList/applicationForm/index.js @@ -24,6 +24,8 @@ ebookCount: 0, paperBookCount: 0, bookList: [], + isIos: wx.getSystemInfoSync().platform === 'ios', + keyboardHeight: 0 }, /** @@ -324,6 +326,73 @@ }) }, + // 鐩戝惉椤甸潰杞敭鐩樺脊璧锋墜鍔ㄦ帹鍔ㄩ〉闈� + bindkeyboardheightchange(e) { + // 鍙ios 澶勭悊 + if (!this.data.isIos === 'ios') { + return + } + + // 閿洏楂樺害 + const height = e.detail.height; + const className = e.target.dataset.class; + if (height === 0) { + this.scrollToInput(0); + return; + } + try { + this.createSelectorQuery() + .select(`.${className}`) + .boundingClientRect((res) => { + // 鍙娇鐢ㄧ獥鍙i珮搴� + const windowHeight = wx.getSystemInfoSync().windowHeight; + // 闄ゅ幓閿洏鐨勫墿浣欓珮搴� + let restHeight = windowHeight - height; + // 鍏冪礌宸︿笅瑙掑潗鏍� + let bottom = res.bottom; + // 鍙湁褰撳厓绱犺杞敭鐩樿鐩栫殑鏃跺�欐墠涓婃帹椤甸潰 + if (bottom <= restHeight) return; + // 鐜伴樁娈甸渶瑕佹粴鍔ㄧ殑澶у皬 + let scrollTop = bottom - restHeight; + this.scrollToInput(height, scrollTop); + }) + .exec(); + } catch (error) {} + }, + + // 鑾峰彇椤甸潰婊氬姩鏉′綅缃� + getScrollOffset() { + return new Promise((resolve) => { + try { + wx.createSelectorQuery() + .selectViewport() + .scrollOffset((res) => { + resolve(res.scrollTop); + }) + .exec(); + } catch (error) { + resolve(0); + } + }); + }, + + // 鐩戝惉椤甸潰杞敭鐩樺脊璧锋墜鍔ㄦ帹鍔ㄩ〉闈� + scrollToInput(keyboardHeight, scrollTop) { + this.setData({ + keyboardHeight, + }); + if (scrollTop) { + try { + this.getScrollOffset().then((lastScrollTop) => { + wx.pageScrollTo({ + // 濡傛灉宸茬粡瀛樺湪婊氬姩锛屽湪姝ゅ熀纭�涓婄户缁粴 + scrollTop: lastScrollTop ? lastScrollTop + scrollTop : scrollTop, + duration: 300, + }); + }); + } catch (error) {} + } + }, /** * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 */ diff --git a/packageDomain/pages/sampleBookList/applicationForm/index.wxml b/packageDomain/pages/sampleBookList/applicationForm/index.wxml index 35902ba..cd6769b 100644 --- a/packageDomain/pages/sampleBookList/applicationForm/index.wxml +++ b/packageDomain/pages/sampleBookList/applicationForm/index.wxml @@ -1,4 +1,4 @@ -<view class="container"> +<view class="container" style="height:calc(100% + {{keyboardHeight ? (keyboardHeight + 'px'):'100%'}});padding-bottom:calc(180rpx + {{keyboardHeight ? 120 + 'px':0}}) "> <t-tabs t-class="t-tabs" defaultValue="{{active}}" split="{{false}}" bind:change="tabClick" show-bottom-line="false"> <t-tab-panel label="绾歌川鏍蜂功" value="0" /> <t-tab-panel label="鐢靛瓙鏍蜂功" value="1" /> @@ -58,19 +58,19 @@ <view class="item"> <text class="label">濮撳悕锛�</text> <view class="item-content"> - <t-input placeholder="璇疯緭鍏ョ湡瀹炲鍚�" borderless value="{{contactInfo.fullName}}" bindchange="onFullNameInput" /> + <t-input placeholder="璇疯緭鍏ョ湡瀹炲鍚�" borderless value="{{contactInfo.fullName}}" bindchange="onFullNameInput" adjust-position="{{isIos?false:true}}" bindkeyboardheightchange="bindkeyboardheightchange" data-class="form-input-1" /> </view> </view> <view class="item"> <text class="label">鑱旂郴鐢佃瘽锛�</text> <view class="item-content"> - <t-input placeholder="杈撳叆鑱旂郴鐢佃瘽" borderless value="{{contactInfo.phone}}" type="number" tips="{{phoneError ? '鎵嬫満鍙疯緭鍏ヤ笉姝g‘' : ''}}" bindchange="onPhoneInput" /> + <t-input placeholder="杈撳叆鑱旂郴鐢佃瘽" borderless value="{{contactInfo.phone}}" type="number" tips="{{phoneError ? '鎵嬫満鍙疯緭鍏ヤ笉姝g‘' : ''}}" bindchange="onPhoneInput" adjust-position="{{isIos?false:true}}" bindkeyboardheightchange="bindkeyboardheightchange" data-class="form-input-2" /> </view> </view> <view class="item"> <text class="label">璇︾粏鍦板潃锛�</text> <view class="item-content"> - <t-input placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" borderless value="{{contactInfo.detailedAddress}}" bindchange="onAddressInput" /> + <t-input placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" borderless value="{{contactInfo.detailedAddress}}" bindchange="onAddressInput" adjust-position="{{isIos?false:true}}" bindkeyboardheightchange="bindkeyboardheightchange" data-class="form-input-3" /> </view> </view> </view> diff --git a/packageDomain/pages/teacherCertification/index.js b/packageDomain/pages/teacherCertification/index.js index 54a37ef..1285add 100644 --- a/packageDomain/pages/teacherCertification/index.js +++ b/packageDomain/pages/teacherCertification/index.js @@ -46,6 +46,8 @@ reasonTxt: "", reasonTxtShow: false, skeletonLoding: true, + isIos: wx.getSystemInfoSync().platform === 'ios', + keyboardHeight: 0 }, /** @@ -681,7 +683,73 @@ this.getUserRole() } }, + // 鐩戝惉椤甸潰杞敭鐩樺脊璧锋墜鍔ㄦ帹鍔ㄩ〉闈� + bindkeyboardheightchange(e) { + // 鍙ios 澶勭悊 + if (!this.data.isIos === 'ios') { + return + } + // 閿洏楂樺害 + const height = e.detail.height; + const className = e.target.dataset.class; + if (height === 0) { + this.scrollToInput(0); + return; + } + try { + this.createSelectorQuery() + .select(`.${className}`) + .boundingClientRect((res) => { + // 鍙娇鐢ㄧ獥鍙i珮搴� + const windowHeight = wx.getSystemInfoSync().windowHeight; + // 闄ゅ幓閿洏鐨勫墿浣欓珮搴� + let restHeight = windowHeight - height; + // 鍏冪礌宸︿笅瑙掑潗鏍� + let bottom = res.bottom; + // 鍙湁褰撳厓绱犺杞敭鐩樿鐩栫殑鏃跺�欐墠涓婃帹椤甸潰 + if (bottom <= restHeight) return; + // 鐜伴樁娈甸渶瑕佹粴鍔ㄧ殑澶у皬 + let scrollTop = bottom - restHeight; + this.scrollToInput(height, scrollTop); + }) + .exec(); + } catch (error) {} + }, + + // 鑾峰彇椤甸潰婊氬姩鏉′綅缃� + getScrollOffset() { + return new Promise((resolve) => { + try { + wx.createSelectorQuery() + .selectViewport() + .scrollOffset((res) => { + resolve(res.scrollTop); + }) + .exec(); + } catch (error) { + resolve(0); + } + }); + }, + + // 鐩戝惉椤甸潰杞敭鐩樺脊璧锋墜鍔ㄦ帹鍔ㄩ〉闈� + scrollToInput(keyboardHeight, scrollTop) { + this.setData({ + keyboardHeight, + }); + if (scrollTop) { + try { + this.getScrollOffset().then((lastScrollTop) => { + wx.pageScrollTo({ + // 濡傛灉宸茬粡瀛樺湪婊氬姩锛屽湪姝ゅ熀纭�涓婄户缁粴 + scrollTop: lastScrollTop ? lastScrollTop + scrollTop : scrollTop, + duration: 300, + }); + }); + } catch (error) {} + } + }, /** * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� */ diff --git a/packageDomain/pages/teacherCertification/index.wxml b/packageDomain/pages/teacherCertification/index.wxml index 8bc23a4..628f7ee 100644 --- a/packageDomain/pages/teacherCertification/index.wxml +++ b/packageDomain/pages/teacherCertification/index.wxml @@ -1,8 +1,8 @@ -<view class="container"> +<view class="container" style="height:calc(100% + {{keyboardHeight ? (keyboardHeight + 'px'):'100%'}});padding-bottom:calc(180rpx + {{keyboardHeight ? 120 + 'px':0}}) "> <scroll-view class="scroll content" scroll-y> <view class="tips" wx:if="{{!skeletonLoding}}"> 浠呴檺瀛︽牎鏈绋嬩换璇炬暀甯堢敵璇凤紱璇蜂笂浼犳湁鏁堝湪鑱屾暀甯堝伐浣滆瘉灏嗘湁鍔╀簬瀹℃牳銆� </view> <view class="page-body" wx:if="{{!skeletonLoding}}"> - <view class="baseInfoBox"> + <view class=" baseInfoBox"> <view class="from-item"> <view class="label"> <text class="empty"></text>褰撳墠鐘舵�侊細 </view> <view class="stateBox"> @@ -58,13 +58,13 @@ <view class="from-item"> <view class="label"> <text class="icon">*</text>閭锛� </view> <view class="item-content"> - <t-input placeholder="杈撳叆閭" borderless value="{{teacherInfo.email}}" tips="{{emailError ? '閭杈撳叆涓嶆纭�' : ''}}" bindchange="onEmailInput" disabled="{{!editState}}" /> + <t-input placeholder="杈撳叆閭" borderless value="{{teacherInfo.email}}" tips="{{emailError ? '閭杈撳叆涓嶆纭�' : ''}}" bindchange="onEmailInput" disabled="{{!editState}}" adjust-position="{{isIos?false:true}}" bindkeyboardheightchange="bindkeyboardheightchange" data-class="form-input-7" /> </view> </view> <view class="from-item"> <view class="label"> <text class="empty"></text>璇︾粏鍦板潃锛� </view> <view class="item-content"> - <t-input placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" borderless value="{{teacherInfo.detailedAddress}}" bindchange="onAddressInput" disabled="{{!editState}}" /> + <t-input placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" borderless value="{{teacherInfo.detailedAddress}}" bindchange="onAddressInput" disabled="{{!editState}}" adjust-position="{{isIos?false:true}}" bindkeyboardheightchange="bindkeyboardheightchange" data-class="form-input-8" /> </view> </view> </view> -- Gitblit v1.9.1