仅当平台是 Android 时才包含行

Posted

技术标签:

【中文标题】仅当平台是 Android 时才包含行【英文标题】:include line only if platform is Android 【发布时间】:2020-05-17 19:23:01 【问题描述】:

我遇到的一个问题是,当我在 android 上导航到包含表单的页面时,键盘会自动弹出。我找到了一个解决方案,但它只适用于 Android:

import  View  from "tns-core-modules/ui/core/view";

export class AutoFocusView extends View 

    createNativeView() 
        if (typeof android !== "undefined") 
            const linearLayout = new android.widget.LinearLayout(this._context);
            linearLayout.setFocusableInTouchMode(true);
            linearLayout.setFocusable(true);
            return linearLayout;
         
        return super.createNativeView();
    

    onLoaded() 
        super.onLoaded();
        this.requestFocus();
    

    requestFocus() 
        const nativeViewProtected = this.nativeViewProtected;
        nativeViewProtected.requestFocus();
    

我使用这个组件。但它只适用于android,所以每次我想为ios构建时,我都需要从我的代码中评论它。我想知道是否有更简单的方法。

【问题讨论】:

【参考方案1】:

你可以这样做:

import isAndroid, isIOS from '@nativescript/core';

然后在你的计算中:

isandroid() 
                return isAndroid;
            

然后在您需要的任何方法中使用此标志:

if(isAndroid) 
  this.requestFocus();

如果需要使用 v-if,您也可以在模板中使用这个 isAndroid 标志。

【讨论】:

【参考方案2】:

仅当平台是 Android 时才调用requestFocus()

onLoaded() 
    super.onLoaded();
    if (typeof android !== "undefined") 
        this.requestFocus();
    

您也可以将其编写为项目中的插件,在特定于平台的文件中单独编写 iOS 和 Android 代码。

【讨论】:

我个人使用了您的解决方案,但我接受了另一个答案,因为我认为它更具可读性,而且我认为您不需要声誉;)谢谢:)

以上是关于仅当平台是 Android 时才包含行的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:仅当字段具有特定值时才获取表中的最新行

仅当以下行未注释时才提取注释行

仅当连接明确时才更新行

仅当应用程序在前台时才会收到 Android 通知

仅当 iOS11 可用时才包含类的扩展

仅当设置了 item 时才使用 WHERE 子句,否则选择所有行