行业动态
演示如何利用Xamarin技术开发iOS系统的第三方输入法
2021-02-24

本文将演示如何使用Xamarin技术为IOS系统开发第三方输入法。

所需环境

使用Xamarin技术开发IOS应用程序有两种选择:

当前,Linux下没有Xamarin环境,从上面可以看出,如果您要开发IOS应用程序,那么就不能没有Mac,因此我个人建议您选择第一选择,这是最无忧,最高效的。如果预算不足,请考虑第二种选择,可以使用虚拟机模拟Mac。本文使用第一种情况进行演示。

实施步骤

首先让我们看一下如何使用原始技术开发IOS输入法。 IOS 8自定义输入法教程:如何创建第三方输入法ios 输入法 开发,本文非常详细,因此在此不再赘述。稍后,您会发现使用Xamarin技术的基本步骤与原始技术相似。

接下来进入Xamarin的世界,让我们创建一个新的Forms应用程序。在这里,您可以选择一个名称并将其命名为TestKeyboard。

ios 输入法 开发

选择“使用可移植类库”方法,目前已正式推荐该方法。

ios 输入法 开发

下一步是选择解决方案的存储位置,这里没有地图。

创建解决方案后,我们可以在左侧看到其组成。顾名思义,TestKeyboard.Droid是与android平台相对应的项目,TestKeyboard。IOS是与IOS平台相对应的项目,不带后缀的TestKeyboard是Forms项目。将有其他项目,例如Visual Studio下的TestKeyboard.UWP。但是,由于无法在Mac上编译这些项目,因此Xamarin Studio在默认情况下不会创建它们。换句话说,如果要开发UWP或WinPhone应用程序,则需要在Windows下工作。至于如何使用它们来开发Forms应用程序,我将在以后介绍它们。

ios 输入法 开发

右键单击解决方案并添加一个新项目:

ios 输入法 开发

选择IOS->扩展名->“自定义键盘扩展名”,然后单击“下一步”,输入名称,在此我选择键盘,然后在“下一步”中,解决方案中将有一个额外的键盘项目。

ios 输入法 开发

键盘项目下有一个KeyboardViewController。此类继承UIInputViewController,并且是输入法的接口控制器。

ios 输入法 开发

我们运行此解决方案,然后将我们的自定义键盘添加到模拟器的键盘设置中。

ios 输入法 开发

ios 输入法 开发

ios 输入法 开发

操作效果

如您所见,效果和过程与原始方法基本相同。对于以下操作,请参考上面给出的文章并画一个葫芦。我不会详细介绍。在这里,我谈论的是Xamarin中的一个技术坑,它可能不是一个坑,但是,如果在开发过程中遇到这种情况,您一定会感到困惑,因此有必要进行讨论。

现在,此IOS输入法应用程序由三个项目组成:TestKeyboard,TestKeyboard。IOS和键盘。 TestKeyboard.Droid是Android平台,因此与它无关。这三个项目的分工是这样的,TestKeyboard和TestKeyboard。IOS负责输入法的设置界面,而键盘是输入法的输入界面。在实际开发中,我们肯定会在设置界面和输入界面中都需要访问一些代码,但是当我尝试这样做时,问题就来了。

我们可以在TestKeyboard。IOS下打开“引用”,我们可以看到其中有一个键盘项目,这意味着TestKeyboard。IOS是指键盘。这种引用是单向的,也就是说,不能将对TestKeyboard。IOS项目的引用添加到键盘项目中。如果您删除了此引用关系,反之亦然,那么您将不会在模拟器上看到我们的自定义键盘。从理论上讲,由于TestKeyboard。IOS是指键盘,因此我在键盘中编写了通用代码,可以同时访问两个项目吗?

我自己将一个类添加到键盘项目中,假设它称为MyClass,然后在TestKeyboard下自定义MyClass2类。IOS并调用前者。编写时不错,但是一旦编译,就会出错。

ios 输入法 开发

错误的内容是:

找不到类型或名称空间名称“键盘”。您是否缺少装配参考?

说实话,此错误是无法解释的ios 输入法 开发,因为TestKeyboard。IOS确实引用了键盘。到目前为止,我仍然不知道如何消除此错误,但是我仍然找到了解决问题的方法。我的方法是绕过此错误。

为IOS创建一个新的库项目,这里名为IOS Lib,并在TestKeyboard中引用它。IOS和键盘,并在该库项目中编写通用代码。

ios 输入法 开发

ios 输入法 开发

在我的实验之后,不仅添加自定义键盘会导致此问题,而且添加其他扩展名也会导致此问题,因此此解决方案具有普遍意义。将通用代码集中到一个库项目中在组织上更有利,这也是一个额外的好处。

写在最后

我认为从事第三方输入法的人并不多,尝试使用Xamarin进行此操作的人更少。因此,恐怕读者的参考文献不多,但是由于这样做的人很少,因此写作的人肯定很少。我要带头吗?


393701618