老谢123
老谢123
  • 发布:2023-05-15 10:25
  • 更新:2023-05-24 12:14
  • 阅读:337

uts开发ios,期望获取ios的输入法的class,但是无法编译通过

分类:uts

我的hbuilder开发的app,在ios上面想知道用户是否安装了第三方的输入法,如下代码据说可以获取到每个输入法的类名,
但是在uts里面无法编译通过;
一.百度出来的据说可用的代码
let keyModes = UITextInputMode.activeInputModes
for mode in keyModes{
let typeStr = type(of: mode)
if UIApplication.shared.textInputMode == mode {
if(typeStr == NSClassFromString("UIKeyboardInputMode")){
// print("系统输入法")
}else{
// print("第三方输入法")
}
}
}
二.我们自己的代码
var txt='输入法:';
//let keyModes = UITextInputMode.activeInputModes
let keyModes = UITextInputMode.activeInputModes
for(let i=0;i<keyModes.length;i++){
let typeStr =typealias(keyModes[i])+'^'+ keyModes[i].self
if(keyModes[i].primaryLanguage!=null)txt+='=i='+String(i)+typeStr+'='+ (keyModes[i].primaryLanguage as string)
}
txt+='=len1gth='+String(keyModes.length);

2023-05-15 10:25 负责人:DCloud_iOS_LZY 分享
已邀请:
老谢123

老谢123 (作者) - 老谢123

想知道,ios有什么方法可以获取到每个输入法的类名.

老谢123

老谢123 (作者) - 老谢123

另外一个判断方法是:
目前可以通过获得当前的UITextInputMode实例来判断是否属于第三方输入法

若是系统输入法,实例为UIKeyboardInputMode(私有API)对象。
若是第三方(百度、搜狗等),实例为UIKeyboardExtensionInputMode(私有API)对象。
======但是我也不知道在uts如何实现这个判断

老谢123

老谢123 (作者) - 老谢123

qq:8949798在线等

老谢123

老谢123 (作者) - 老谢123

type(of: mode)
编译的时候,这个方法,后台云端编译不认
报错: Syntax Error

DCloud_iOS_LZY

DCloud_iOS_LZY

下面方式可以实现:
//swift代码

    func isThirdPartyKeyboard() -> Bool {  
        let mode = UIApplication.shared.textInputMode  
        if let model = mode, model.description.contains("Extension") {  
            return true  
        }  
        return false  
    }

// uts代码

    function isThirdPartyKeyboard(): bool {  
        let mode = UIApplication.shared.textInputMode  
        if (mode != null) {  
           if (mode!.description.contains("Extension") ) {  
               return true  
           }  
        }  
        return false  
    }
  • 老谢123 (作者)

    非常感谢您专业的回复,您就是我们贫下码农的指路明灯和救世主!

    2023-06-20 11:48

要回复问题请先登录注册