TextField切换输入法问题

问题描述

要使焦点落到TextField控件时启用123输入法用iTextField.setInitialInputMode("IS_LATIN_DIGITS")为什么有的手机不好使?回到默认中文输入法?用setInitialInputMode("IS_LATIN_DIGITS")和setInitialInputMode("IS_FULLWIDTH_DIGITS")有什么区别?项目是GBK的

解决方案

解决方案二:
TextField是可能够放入Form中的可编辑的文本框组件。它可以通过一段文本初始化。TextField包含一个最大大小,该大小就是任何时候可以保存在其中的字符量(即容量)。当TextField实例构建时,当用户在TextField中编辑文本时,以及当应用程序调用TextFiled方法修改其内容时,大小都会受到限制。最大大小是最大的可存储大小并且和任何时候显示的字符数量大小无关。显示的字符数量和它们如果按行列安排是由设备决定的。系统会为最大大小设定界限,实际设置的最大大小会比应用程序请求的要小。实际设置的值将由getMaxSize()反映出来。一个健全的应用程序应当把这个值和请求的最大大小值相比较并在它们不相等时进行处理。输入限制TextField和TextBox共享输入限制的概念。不同的限制允许应用程序要求用户输入的限制不同。系统来执行应用程序请求的用户输入限制。比如,如果应用程序请求在TextField上设置NUMERIC的限制,系统必须只允许输入数字。实际的文本对象的内容由应用程序设置和修改,并通过TextBos和TextField的API反馈给应用程序。显示的内容有可能和实际的内容有差别,如果系统选择用适合文本对象的特殊格式。比如,一个PHONENUMBER域根据电话号码的书写习惯,把国家号,区域号,前缀分组,通过混合显示分隔符和数字的方式显示。任何显示出来的空格或是分隔符不被认为是文本对象的实际内容。比如,一个PHONENUMBER限制的文本对象可能按如下方式显示:(408)555-1212但是实际的通过API的应用程序可见的内容是字符串”4085551212”。Size方法反映的是实际内容里的字符数量,不是被显示出来的字符数量,所以在这里szie方法将反回10。一些限制,比如DECIMAL,需要系统对文本对象的内容执行语法有效性检查。语法检查将对实际内容执行,就像上面指出的和显示的内容会有所不同。语法检查还会对传递给构造函数的初始值起作用,同样对所有改变文本对象内容的方法起作用。方法和构造器抛出IllegalArgumentException如果它们造成文本框的内容不符合语法要求。传递给setConstraints()的值由上面提到的限制集合组成,同样由不同的标志位来修正文本输入和显示行为。限制集的值是一个值的低16位,并且可以通过按位析取操作符(&)同一个CONSTRAINT_MASK常量组合。限制集合如下:ANYEMAILADDRNUMERICPHONENUMBERURLDECIMAL修正标志排列在限制值的高16位上,就是说,那些在CONSTRAINT_MASK常量中的补充值。修正符可以通过把限制值和一个修正标志与(&)操作单独测试。修正标志如下:PASSWORDUNEDITABLESENSITIVENON_PREDICTIVEINITIAL_CAPS_WORDINITIAL_CAPS_SENTENCE输入模式TextField和TextBox共同拥有输入模式的概念。应用程序可以要求系统在用户编辑TextField或是TextBox时执行特定的输入模式。输入模式是存在于特定设备上的文本输入的概念。应用程序不是直接请求一个输入模式,因为文本输入的用户界面在不同的设备上并不相同。取而代之,应用程序可以方便的请求特定的字符输入。这可以通过向setInitialInputMode()传递一个Unicode字符字集的名字来实现。对这个方法的调用会要求系统为下一个输入设置输入模式以方便用户输入那个字符子集中的字符。应用程序还可以通过设置限制值中的修正标志来要求输入模式包含特定的行为字符。请求的输入模式应该在TextBox或是TextField对象被编辑的时候使用。如果用户在前一个交互过程中改变了输入模式,应用程序请求的用户模式将替代前一个用户设置的输入模式。然而,输入模式不是被限制的,用户可以在编辑的任何时候改变输入模式。如果编辑正在被处理,对setInitialInputMode的调用将不会影响当前的输入模式,但是将在下次用户编辑文本对象的时候起作用。初始的输入模式是用系统内定的。如果系统不能提供一个合适的用户请求的模式,将使用默认的输入模式。应用程序请求的用户输入模式并不是对用户可输入的字符的一种限制。用户必须被允许切换输入模式来输入符合输入限制的任何字符。输入限制比输入模式的优先级要高,而且系统可以拒绝提供一个特定的输入模式如果它合当前的输入限制不符。比如,如果当前的输入限制是ANY,调用setInitialInputMode(“MIDP_UPPERCASE_LATIN”);将把输入模式设置成允许输入大定拉丁字符。这里不会限制这种输入,并且用户可以输入数字或是小写拉丁字母。但是,如果当前的限制是NUMERIC,系统就会忽略允许大写拉丁字符输入的请求,因为这些字符在NUMERIC限制下是不被允许输入的。这时,系统会用数字输入模式来代替,因为这样一个输入模式在NUMERIC限制下总是适用的。一个字符串用来命名传递给setInitialInputMode()方法参数的Unicode字符子集。字符串是大小写相关的。Unicode字符块通过向J2SE中java.lang.Character.UnicodeBlock类定义的表示Unicode字符块的字符串添加前缀”UCB_”来表示。所有Unicode字符块可以用这种方式命名。为了方便,把最常用的Unicode字符块列在下面:UCB_BASIC_LATINUCB_GREEKUCB_CYRILLICUCB_ARMENIANUCB_HEBREWUCB_ARABICUCB_DEVANAGARIUCB_BENGALIUCB_THAIUCB_HIRAGANAUCB_KATAKANAUCB_HANGUL_SYLLABLES输符子集可以通过向J2SE中java.awt.im.InputSubset类定义的字符串添加”IS_”来定义。所有定义过的子集都可以使用。为了方便,把最常用的Unicode字符块列在下面:IS_FULLWIDTH_DIGITSIS_FULLWIDTH_LATINIS_HALFWIDTH_KATAKANAIS_HANJAIS_KANJIIS_LATINIS_LATIN_DIGITSIS_SIMPLIFIED_HANZIIS_TRADITIONAL_HANZIMIDP也定义了下列的字符子集MIDP_UPPERCASE_LATIN-IS_LATIN中符合大写拉丁字符的子集MIDP_LOWERCASE_LATIN–IS_LATIN中符合小写拉丁字符的子集最后,系统特定的字符子集可以通过向字符串添加”X_”的方法定义。为了必免名字空间冲突,建议系统特定名字在”X_”后包含定义者的公司或是组织名称。比如,一个日语应用程序可能特定的TextField,应用程序在这里主要用来输入日语中的外来字。应用程序可以通过下面的方法请求一个容易使用的平假名输入:textfield.setInitialInputMode(“UCB_HIRAGANA”);系统提示系统不需要编译上面显示的所有字符串。它们只需要编译它们能够支持的Unicode字符子集的字符串。如果应用程序传递的子集名称和已知的子集名称不同,请求只是简单的被忽略而不产生错误,而且默认输入模式会被使用。这使得系统很便宜的支持这种特性。然而,这会造成应用程序不能确定它的请求是否被接受,也不能确定它请求的Unicode字符是否是一个有效的子集。本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/loriwang/archive/2006/04/20/670672.aspx
解决方案三:
TextField
解决方案四:
一楼写的很全面啊!
解决方案五:
1L是强人··
解决方案六:
谢谢1楼,谢谢各位。记得在哪里看到过如何枚举手机里支持的输入法名称如“IS_FULLWIDTH_DIGITS”,但现在找不到了,现在的问题是造成有的手机用setInitialInputMode失效,是因为手机没提供相应输入法标示,还是我程序的用法不对,如Unicode字符,字符集等问题。
解决方案七:

解决方案八:
标记一下,谢谢
解决方案九:
学习了……

时间: 2024-09-14 01:56:27

TextField切换输入法问题的相关文章

切换输入法死机解决方法

有些朋友在上网时会发现,每当要输入文字切换输入法时,电脑都会卡死,网页无响应,这是什么原因呢?别急,本文小编就为大家提供一些解决方法,希望对大家有帮助! 根据网友的提示,笔者在其电脑中打开网页后,首先使用鼠标点击右下角任务栏的语言栏,鼠标选择切换,发现没有任何问题,但使用输入法切换键 "Crtl+Shift"组合键切换时却发现会引起页面无响应,鼠标点什么都没用,整个电脑就卡死了.对于切换输入法会卡机其实笔者以前也遇到过,主要与 软件之间的兼容性有关,很多时候都是搜狗输入法与其他软件有冲

一切换输入法就卡死 切换搜狗输入法卡怎么回事?

近日朋友一电脑出现了一个比较奇怪的问题,每次打开网页,当要输入文字的时候,切换输入法电脑都会卡死,半天没响应,没办法只能进入任务管理器,将引起的无响应网页结束才可以解决问题,不知道是怎么回事? 根据网友的提示,笔者在其电脑中打开网页后,首先使用鼠标点击右下角任务栏的语言栏,鼠标选择切换,发现没有任何问题,但使用输入法切换键 "Crtl+Shift"组合键切换时却发现会引起页面无响应,鼠标点什么都没用,整个电脑就卡死了.对于切换输入法会卡机其实笔者以前也遇到过,主要与软件之间的兼容性有关

反常规快速切换输入法

在不同输入法之间切换,通常使用快捷键"Ctrl+Shift".不过,并非事事如意,常常会在不经意之间多按了几次"Ctrl+Shift",这时如果系统中安装了多个输入法,就会导致错过了需要的输入法,这样就不得不再次连续按下"Ctrl+Shift"这对组合键了. 遇到这种情况时,有一个小技巧,路大侠跟大家分享. 在错过了自己所需的输入法之后,不要着急继续按下"Ctrl+Shift",而是按下键盘另一边的"Ctrl+Shi

Excel单元格如何自动切换输入法

  制作Excel工作表时,往往既有数据又有文字,相邻单元格之间可能是汉字与数字.代号交替.这样,在输入时就需要在中英文之间反复切换输入法,非常麻烦.本技巧可以让单元格自动切换输入法,光标所到之处智能开启对应输入法,免去手工切换的麻烦. 打开Excel表格,然后打开所用的中文输入法.选中需要输入中文的单元格区域.单击"数据工具"分组下的"数据验证"窗口中的"输入法模式"选项卡,在"模式"框中选择"打开",单

单元格自动切换输入法的技巧

  单元格自动切换输入法的技巧           打开Excel表格,然后打开所用的中文输入法.选中需要输入中文的单元格区域.单击"数据工具"分组下的"数据验证"窗口中的"输入法模式"选项卡,在"模式"框中选择"打开",单击"确定"按钮. 选中需要输入数字或半角字符的单元格区域,在"数据验证"对话框的输入法"模式"框中选择"关闭(英文模

PPT如何快速切换输入法

  大家知道在Excel中通过设置可以方便地切换输入法,难道在Powerpoint中就没有这样的功能吗?事实上是有这种功能的:单击"工具"菜单中的 "选项"命令,切换到"编辑"选项卡,选中"'自动键盘'切换"复选框,单击确定即可.该设置对已有文件的编辑非常方便,但在编辑新文件时却起不了多大的作用.

Windows 8系统为不同应用窗口自动切换输入法的方法

首先在Windows 8中按下"Win+X"快捷键调出界面左下方的快速链接菜单,选择"控制面板". 图示:Win8快速链接菜单 在Win8控制面板依次选择"时钟.语言和区域-语言",在"语言"设置面板中,我们可以看到当前Win8系统的语言种类和对应的输入法.点击界面左边的"高级设置"即可进入Win8系统输入法的整体设置. 图示:进入Win8语言高级设置 重点来了!在语言的"高级设置"界面

Win8怎么切换输入法?

  1.Windows 8 系统中关于中英文输入状态切换,下图中输入法状态为中文; 2.使用 Shift 按键可以切换到英文模式.如下图所示: 3.如果想要更改切换键,可以对图中的"中"图标点右键,选择输入选项.如下图所示: 4.打开常规选项卡,在中英文输入切换键处修改切换方式.如下图所示: 5.点击更改语言首选项,会打开控制面板的语言栏选项.如下图所示: 6.点击上图中的高级设置,弹出窗口中选择更改语言栏热键.如下图所示: 7.点击后会打开文本服务和输入语言窗口,在高级键设置选项卡中

Win8无法切换输入法的解决方法

Win8无法切换输入法的解决方法如下: Windows 8消费者预览版的输入法切换方式与Windows 7系统有较大区别,同时各种输入法对于Windows 8的兼容性尚不完善,有时会出现无法切换输入法的情况,此时可以在控制面板中做设置调整,一般可以解决此类问题. 操作步骤: 一般遇到的输入法无法切换的情况会有两种: 一.无法显示出语言栏,使用快捷键也无法切换出来 可以通过重置输入法设置来重新显示,方法如下: 1.打开控制面板. 2.点击"更改输入法". 3.点击左侧的"高级设