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