android - Ionic,在 iOS 上将按钮保持在键盘上方

标签 android ios angularjs ionic-framework

我需要此页面底部的“确定”按钮在打开时保持在键盘上方。 如左侧屏幕截图所示,它适用于 Android,但不适用于 IOS(右侧屏幕截图)。

你能帮我写代码吗?

此外,如您所见,“select-on-focus”指令在 iOS 中不起作用... 键盘应该是 iOS 上的数字键盘(电话键盘)……但事实并非如此。

然后 3 期 ;)

这是一个视频: https://youtu.be/_bOWGMGesgk

Android iOS

代码如下:

<div class="wrapperFlex withNextButton">
<div class="itemTitle">
    <div class="text">
        {{'paramQuestions.weight' | translate }}
    </div>
</div>

<div id="weightdata" class="itemParameters weightdataclass row">

    <input class="weightinput" type="number" name="userweight" ng-min="{{data.minWeight}}" ng-max="{{data.maxWeight}}" ng-model="data.realWeight" ng-change="updateViewGenVol(data.weightunit, data.userweight, data.BLfactorValue);saveUserWeight()" select-on-focus required></input>
    <div class="weightunitradios">
        <ion-checkbox class="checkboxes checkbox-blueboardline" ng-model="data.weightunit" ng-true-value="'kg'" ng-false-value="'lbs'" ng-change="saveWeightUnit(); changeMinMax(); convertWeightInput(); saveUserWeight();">kg</ion-checkbox>
        <ion-checkbox class="checkboxes checkbox-blueboardline" ng-model="data.weightunit" ng-true-value="'lbs'" ng-false-value="'kg'" ng-change="saveWeightUnit(); changeMinMax(); convertWeightInput(); saveUserWeight();">lbs</ion-checkbox>
    </div>
</div>
</div>

指令.js:

.directive('selectOnFocus', function ($timeout) {
  return {
      restrict: 'A',
      link: function (scope, element, attrs) {
          var focusedElement = null;

          element.on('focus', function () {
              var self = this;
              if (focusedElement != self) {
                  focusedElement = self;
                  $timeout(function () {
                      self.select();
                  }, 10);
              }
          });

          element.on('blur', function () {
              focusedElement = null;
          });
        }
  }
})

最佳答案

对于键盘/滚动问题,我没有找到比这个指令更好的方法(仅适用于 ios):

.directive('keyboardResize', function ($ionicScrollDelegate) {
      return {
        restrict: 'A',
        link: function postLink(scope, element, attrs) {

            function onKeyboardShow (e) {
                element.css('bottom', e.keyboardHeight + 'px');
                $ionicScrollDelegate.$getByHandle(attrs.delegateHandle).resize();
                console.log("ouiaaaaaaaaa")
            };
            function onKeyboardHide (e) {
                element.css('bottom', '');
                $ionicScrollDelegate.$getByHandle(attrs.delegateHandle).resize();
            };

            if (ionic.Platform.isIOS()) {
              ionic.on('native.keyboardshow', onKeyboardShow, window);
              ionic.on('native.keyboardhide', onKeyboardHide, window);

              scope.$on('$destroy', function () {
                  ionic.off('native.keyboardshow', onKeyboardShow, window);
                  ionic.off('native.keyboardhide', onKeyboardHide, window);
              });
            }

        }
      }
    })      

关于android - Ionic,在 iOS 上将按钮保持在键盘上方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38198148/

相关文章:

android - 带有 CoordinatorLayout 的 Snackbar 禁用关闭

ios - Alamofire 请求中的 Post 和 Get 参数

javascript - Angular 范围内的值变得不确定

angularjs - VSCode 找不到 angular.d.ts

javascript switch 语句/case 表达式

android - 如何在 Android 中使用 Parcel?

android - RadioGroup onCheckedChanged 函数不会触发

每次更改时,Android Studio 设计屏幕都会滚动到顶部

ios - 使用 NSDateFormatter 将 NSString 转换为 NSDate 返回 null

ios - 将数据传递给下一个 ViewController 时出错