在移动设备应⽤程序中使⽤软键盘
许多设备都不包括硬件键盘。在必要时,这些设备会使⽤在屏幕中打开的键盘。软键盘⼜称做屏幕键盘或虚拟键盘,当⽤户输⼊信息或取消
操作后,软键盘将会关闭。
下图显⽰了⼀个使⽤了软键盘的应⽤程序:
根据启⽤软键盘的组件,软键盘有不同的功能集:
本机功能:⽤于默认⽂本输⼊控件TextArea和TextInput的键盘,它挂接到本机接⼝,具有⾃动纠正、⾃动完成和⾃定义键盘布局等
功能。对完整功能集的⽀持已内置到基于StageText默认外观类的⽂本输⼊控件中。并⾮所有设备都⽀持所有本机功能。
有限功能:⽤于TextArea和TextInput之外的任何其它控件的键盘,或者在控件使⽤基于TextField的外观时,⽤于TextArea和
TextInput的键盘。有限功能集不⽀持本机OS功能,如⾃动纠正、⾃动完成和⾃定义键盘布局。
由于该键盘会占⽤⼀部分屏幕,Flex必须确保应⽤程序在缩⼩的屏幕区域中仍能正常⼯作。例如,⽤户选择TextInput控件时会打开软键
盘。键盘打开后,Flex⾃动根据可⽤屏幕区域调整应⽤程序的⼤⼩。Flex随后可以调整所选TextInput控件的位置,使其在键盘之上可见。
博客Pe餐饮名片 terElst发表了关于的⽂章。
在移动设备Flex应⽤程序中打开软键盘
可使⽤三种⽅法在移动设备应⽤程序中打开软键盘:
将焦点放在具有或之类⽂本输⼊控件的控件上
将控件的needsSoftKeyboard属性设置为true,并将焦点放在该控件上
对控件调⽤requestSoftKeyboard()⽅法(不在iOS上)
键盘将保持打开状态,直⾄发⽣以下操作之⼀:
⽤户将焦点移动到不接收⽂本输⼊的控件。当⽤户⼿动指向另⼀个⽂本输⼊控件,或者⽤户按键盘上的返回键,应⽤程序随之将焦点
移到另⼀个控件时就会发⽣这种情况。
如果焦点移动到其他⽂本输⼊控件,或移动到needsSoftKeyboard属性为true的控件,则键盘保持打开状态。
⽤户按下设备上的后退按钮以取消输⼊。
您可通过编程将焦点更改到⾮交互式控件或将设置为null。
为⽤户提供⽂本输⼊控件
如果为⽤户提供了⽂本输⼊控件,当⽤户将焦点放在该控件上时软键盘就会出现,除⾮将editable属性设置为fal。
TextInput和TextArea控件的默认⾏为是使⽤类来呈现⽂本。因此,为这些控件显⽰的键盘⽀持⾃动纠正、⾃动⼤写和键盘类型等本机功
能。并⾮所有功能在所有设备上都受⽀持。
如果将外观类更改为对⽂本输⼊控件使⽤基于的外观,这些功能将受到限制。键盘本⾝相同,但不⽀持本机功能。
设置needsSoftKeyboard属性
可以配置⾮输⼊控件,以为其打开软键盘,例如Button或ButtonBar控件。要在⽂本输⼊控件外的其它控件获得焦点时打开键盘,请将该
控件的needsSoftKeyboard属性设置为true。所有Flex组件都从类继承此属性。
为TextInput和TextArea之外的任何控件打开的键盘都不⽀持⾃动⼤写、⾃动纠正和⾃定义键盘类型等本机功能。
注:当⽂本输⼊控件获得焦点时,始终会打开键盘。⽂本输⼊控件将忽略needsSoftKeyboard属性,设置该属性不会影响⽂本输⼊控件。
调⽤requestSoftKeyboard()⽅法
要以编程⽅式打开软键盘,可以调⽤requestSoftKeyboard()⽅法。对于调⽤此⽅法的对象,必须也将其needsSoftKeyboard属性设置为true。此⽅
法会将焦点更改到调⽤此⽅法的对象上,如果设备没有硬件键盘,则会打开软键盘。
类定义了requestSoftKeyboard()⽅法。因此,您可以在作为InteractiveObject⼦类的任何组件上调⽤此⽅法。
如果在TextArea或TextInput控件上调⽤requestSoftKeyboard()⽅法,则⾃动纠正和⾃动⼤写等本机键盘功能将是受⽀持的(如果设备⽀持这
些功能)。
requestSoftKeyboard()⽅法不适⽤于iOS设备。
使⽤软键盘的本机功能
和类定如何养蚯蚓 义了移动设备应⽤程序中和控件的外观。这些外观使⽤类来呈现⽂本,并挂接到软键盘的本机功能中。这些功能包括:
⾃动纠正
⾃动⼤写
⾃定义返回键标签
⾃定义键盘类型
⽂本输⼊控件也可以使⽤基于的外观来呈现⽂本。这些外观不⽀持本机功能。但是,它们为基础⽂本控件提供了附加功能,如⽀持滚动表
单、嵌⼊字体、访问keyUp和keyDown事件、剪切、⽂本测量和⼩数Alpha值。
要使⽤基于TextField的外观,请将⽂本输⼊控件的skinClass属性设置为指向和类。例如:
在Flex移动设备应⽤程序中对软键盘使⽤⾃动纠正功能
⾃动纠正是OS试图纠正拼写错误并对⽤户输⼊应⽤预测性键⼊的⼀种⾏为。根据设备类型,此⾏为可能以⽂本之上的⽓泡提⽰框、软键盘
扩展或其它某种⽅式实现。
您可以通过将⽂本输⼊控件的autoCorrect属性设置为true来在移动设备个人向单位承诺书范文 应⽤程序中对软键盘使⽤⾃动纠正功能。这是默认值。
在下例中您可以打开和关闭⾃动纠正功能。
<?xmlversion="1.0"encoding="utf-8"?>
xmlns:s="library:///flex/spark"title="Auto-Correction">
并⾮所有设备都⽀持⾃动纠正功能。如果您在不⽀持此功能的设备上启⽤或禁⽤autoCorrect属性,运⾏时会忽略此值,并使⽤设备的默认⾏
为。
在Flex移动设备应⽤程序中对软键盘使⽤⾃慌乱 动⼤写功能
⾃动⼤写是⼀种在⽤户输⼊⽂本时指⽰⽂本输⼊控件将某些字或字母设置为⼤写的设置。例如,您可以将所有字母设为⼤写,也可以⾃动地
只将每个句⼦的第⼀个字设为⼤写。这样⽤户在移动设备应⽤程序中输⼊⽂本时就不必担⼼⼤写设置了,这⼗分⽅便。
您可通过在⽂本输⼊控件上设置autoCapitalize属性值来在软键盘中使⽤⾃动⼤写功能。可能值有none、word、ntence和all。类定义了可能的
值。默认值为none。
在下例中您可以为⾃动⼤写功能选择不同的值。
<?xmlversion="1.0"encoding="utf-8"?>
xmlns:s="library:///flex/spark"title="Auto-Capitalization">
并⾮所有设备都⽀持⾃动⼤写功能。如果您在不⽀持此功能的设备上设置autoCapitalize属性的值,运⾏时会忽略此值,并使⽤设备的默认
值。
在Flex移动设备应⽤程序中更改软键盘类型
类定义了移动设备应⽤程序的软键盘类型。您可在⽂本输⼊控件上使⽤softKeyboardType属性选择键盘类型。
⼤多数键盘(如email和contact)之间只有细微差别。例如,除以“@”代替了话筒外,email键盘与contact键盘为⽤户提供的按键完全相
同。url键盘使⽤“/”符号。number键盘与众不同。此键盘外观类似⼀个计算器屏幕,焦点在数字和运算符上。
下例显⽰了可⽤的不同类型的软键盘:
<?xmlversion="1.0"encoding="utf-8"?>
xmlns:s="library:///flex/spark"title="KeyboardTypes">
并⾮所有软键盘类型在所有设备上都受⽀持。如果指定了不受⽀持的类型,运⾏时会忽略此值,⽽使⽤设备的默认值。
在Flex移动设备应⽤程序中更改软键盘上的返回键标签
软键盘弹出,⽤户输⼊⽂本时,必须有⼀种⽅法让⽤户表⽰他们已完成了输⼊,并且希望移到下⼀个字段或提交所输⼊的数据。在软键盘
上,通常使⽤“返回键”完成此操作。此按键不会在⽂本输⼊中输⼊任何字符,只是通知⽂本输⼊控件⽤户已完成了⽂本输⼊。
类为返回键定义了可能的标签。可能的值有default、done、go、next和arch。您可以在⽂本输⼊控件中使⽤returnKeyLabel属性指定返回键标
签。
在下例中您可以选择不同的返回键标签:
<?xmlversion="1.0"encoding="utf-8"?>
xmlns:s="library:///flex/spark"title="ReturnKeyLabels">
在事件或交互⽅⾯,不同的返回键类型之间没有差别。更改returnKeyLabel属性只会更改按键的标签。
并⾮所有设备都⽀持返回键标签的设置。如果您在不⽀持此功能的设备上设置returnKeyLabel属性的值,运⾏时会忽略此值,⽽使⽤设备的默
认值。
在移动设备应⽤程序中使⽤与软键盘相关的事件
在移动设备上与软键盘进⾏交互不同于在桌⾯或基于Web的应⽤程序中与键盘进⾏交互。下表列出了与使⽤软键盘相关的事件:
事件何时分派
enter
⽤户按返回键时。
keyDown和keyUp对于基于StageText的外观,仅在按下和释放某些按键时。对于基于TextField的外观,在按下和释放所有按键时。
不会为所有设备上的所有按键分派这些事件。不要依赖这些⽅法来捕获软键盘的按键输⼊,除⾮对启⽤键盘的控件使
⽤了基于TestField的外观。
softKeyboardActivating
打开键盘之前。
softKeyboardActivate
打开键盘之后。
softKeyboardDeactivate
关闭键盘之后。
要确定⽤户何时在软键盘上完成了⼯作,可以在⽂本输⼊控件上侦听事件。按下返回键时控件就会分派此事件。通过侦
听enter事件,您可以执⾏验证、更改焦点,或对最近输⼊的⽂本执⾏其它操作。
在某些情况下,不会分派enter事件。在Android设备上当对视图中的最后⼀个⽂本输⼊控件使⽤软键盘时,此限制就会出现。要解决此问
题,请在视图的最后⼀个⽂本输⼊控件上将returnKeyLabel属性设置为go、next或arch。
在下例中,当⽤户在软键盘上按“Next”键时,焦点将从⼀个字段更改到下⼀个字段。
<?xmlversion="1.0"encoding="utf-8"?>
xmlns:s="library:///flex/spark"title="ChangeFocus">
privatefunctionchangeField(ti:TextInput):void{
//Beforechangingfocustoanewcontrol,tthestage'sfocustonull:
=null;
//SetfocusontheTextInputthatwaspasdin:
us();
}
]]>
width="80%"
returnKeyLabel="next"
enter="changeField(ti2)"/>
width="80%"
returnKeyLabel="next"
enter="changeField(ti3)"/>
width="80%"
returnKeyLabel="next"
enter="changeField(ti1)"/>
当⽤户与TextInput和TextArea控件的默认软键盘交互时,仅对⼀⼩部分按键分派keyUp和keyDown事件。要捕获所有键的各个按键⾏为,
请使⽤change事件。只要⽂本输⼊控件的内容有更改,就会分派change事件。这样做的缺点是您⽆法访问按下的按键的属性,并且必须编写
⾃⼰的按键逻辑。
下例显⽰了最后⼀个按下的按键的字符代码:
<?xmlversion="1.0"encoding="utf-8"?>
xmlns:s="library:///flex/spark"title="KeyboardE属兔几月出生最好命运 vents">
privatevarstoredValueOfText:String=null;
//Comparethenewtextagainstthestoredvaluetoewhatkeywaspresd.
privatefunctioncompareKey(e:Event):void{
varkey:String="";
if(storedValueOfText==null){
key=deAt(0).toString();//Capturethefirstkeypresd.
}el{
//Comparethestoredvalueagainstthecurrentvalueandextractthedifference.
for(vari:int=0;i<;i++){
if((i)==(i)){
//Donothingifthey'reequal.
}el{
key=deAt(i).toString();
}
}
}
="The'"+key+"'keywaspresd.";
storedValueOfText=;
}
]]>
如果光标位于⽂本输⼊字段的末尾,此⽰例仅识别最后⼀个按下的按键。
当⽤户与基于TextField控件的软键盘进⾏交互时,像keyUp和keyDown这样的事件将适⽤于所有按键。下例使⽤keyUp处理函数来获取当前
按键,并基于按键代码对Label控件应⽤样式。因为requestSoftKeyboard()⽅法会为Label控件⽽不是TextInput或TextArea控件启⽤键盘,
应⽤程序将使⽤基于TextField的键盘。
<?xmlversion="1.0"encoding="utf-8"?>
xmlns:s="library:///flex/spark"title="requestSoftKeyboard()">
privatefunctionhandleButtonClick():void{
tSoftKeyboard();
}
/*OktoukeyUphandleronlimitedscreenkeyboard.*/
privatefunctionhandleKeys(event:KeyboardEvent):void{
varc:int;
switch(e){
ca(82)://82="r"
c=0xFF0000;
break;
ca(71)://71="g"
c=0x00FF00;
break;
ca(66)://66="b"
c=0x0000FF;
break;
}
le("color",c);
}
]]>
要以编程⽅式关闭软键盘,请将设为null。要关闭软键盘并将焦点设置到另⼀个控件,请将设为null,然后将焦点设置
在⽬标控件上。您也可以调⽤另⼀个控件的requestSoftKeyboard()⽅法来更改焦点,在另⼀个控件上打开软键盘。
可通过事件处理函数访问软键盘的某些属性。要访问软键盘的⼤⼩和位置,请使⽤类的softKeyboardRect属性,如下例所⽰:
<?xmlversion="1.0"encoding="utf-8"?>
xmlns:s="library:///flex/spark"title="SoftKeyboardEvents">
softKeyboardActivate="+=yboardRect+'n'"
softKeyboardDea借鉴的英文 ctivate="+=yboardRect+'n'"
softKeyboardActivating="+=yb微信添加银行卡 oardRect+'n'"/>
配置应⽤程序以⽀持软键盘
为⽀持软键盘,当键盘打开时,应⽤程序应当可以执⾏以下操作:
根据剩余可⽤屏幕空间来调整应⽤程序⼤⼩,以免键盘会与应⽤程序发⽣重叠。
滚动获得焦点的⽂本输⼊控件的⽗容器,以确保该控件可见。
配置系统以⽀持软键盘
在全屏模式下运⾏的应⽤程序不⽀持软键盘。因此,请确保⽂件中的
请确保应⽤程序的呈⽰模式设置为CPU模式。呈⽰模式由应⽤程序描述符⽂件中的
性设置为默认值cpu,⽽不是gpu。
注:默认情况下,⽂件中不包括
⽂件中未包含此设置,则其默认值为cpu。
打开软键盘时滚动⽗容器
Application容器的属性决定着应⽤程序的⼤⼩调整⾏为。如果resizeForSoftKeyboard属性是默认值fal,则键盘可以显⽰在应⽤程序的顶部。
如果值为true,则会调整应⽤程序⼤⼩,以减去键盘⼤⼩。
要⽀持滚动,⽂本输⼊控件必须使⽤基于TextField的外观,⽽不是基于StageText的外观。可通过相应地将TextInput或TextArea控件
的skinClass属性指向或类来达到此⽬的。
要进⾏滚动,请将任何⽂本输⼊控件的⽗容器封装在组件中。当打开键盘的组件获得焦点时,Scroller⾃动将该组件滚动到视图中。该组件
也可以是Scroller组件的多个嵌套容器的⼦代。
⽗容器必须是或类或其⼦类。获得焦点的组件必须实现IVisualElement接⼝,并且必须可以获得焦点。
通过将⽗容器封装在Scroller组件中,可以在键盘打开的情况下滚动该容器。例如,某个容器中包含多个⽂本输⼊控件。然后,您滚动到每
个⽂本输⼊控件以输⼊数据。
当关闭键盘时,⽗容器可能⼩于可⽤屏幕空间。如果容器⼩于可⽤屏幕空间,Scroller会将滚动位置恢复为0,即容器的顶部。
下⾯的⽰例中显⽰的是带有多个TextInput控件和⼀个Scroller组件的View容器。
<?xmlversion="1.0"encoding="utf-8"?>
xmlns:s="library:///flex/spark"
title="CompoEmail">
bottom="5"horizontalAlign="left">
VGroup容器是TextInput控件的⽗容器。Scroller将VGroup封装起来,每个TextInput控件在获得焦点时,都将显⽰在键盘上⽅。
有关Scroller组件的更多信息,请参阅。
打开软键盘时调整应⽤程序⼤⼩
如果容器的resizeForSoftKeyboard属性为true,则应⽤程序会调整⾃⾝⼤⼩以在键盘打开时适合可⽤的屏幕区域。当关闭键盘时,应⽤程序恢
复原有⼤⼩。
下例中显⽰的是⼀个应⽤程序的主应⽤程序⽂件,该应⽤程序通过将resizeForSoftKeyboard属性设置为true来允许调整应⽤程序⼤⼩。
<?xmlversion="1.0"encoding="utf-8"?>
xmlns:s="library:///flex/spark"
firstView="obileKeyboardHomeView"
resizeForSoftKeyboard="true">
要允许调整应⽤程序⼤⼩,请确保将应⽤程序描述符⽂件中
认值为none。此默认值将AIR配置为移动整个Stage,来使获得焦点的⽂本组件可见。
尽管软键盘事件的可靠性⾜以保证⼤多时候的⾃动调整⾏为可以达到预期效果,但仍应尽量避免将关键的UI元素放在软键盘事件失败时软
键盘可能遮盖到的位置。例如,请避免在视图的下半部分放置“确定”、“登录”或“提交”按钮。
当基于StageText的控件成为动画或参与动画时,运⾏时会临时将其替换为位图,以便⽂本与其他项⽬同步移动。如果该控件具有焦点,这
将导致控件临时丢失焦点。在某些情况下,软键盘会在不隐藏软键盘的情况下隐藏或触发softKeyboardDeactivate事件。
尤其是当以编程⽅式将弹出窗⼝内的基于StageText的组件设为焦点,⽽由于软键盘导致窗⼝⼤⼩动态变化时,该问题特别明显。要避免此
情况,请尽量在不会因软键盘⽽调整⼤⼩的弹出窗⼝内使⽤基于StageText的组件。
如果必须在可调整⼤⼩的弹出窗⼝中使⽤基于StageText的组件,请尝试⾸先显⽰软键盘并等待弹出窗⼝的动画完成,然后再以编程⽅式将
基于StageText的组件设为焦点。作为替代⽅法,可以避免以编程⽅式在弹出窗⼝内设置焦点。
配置⽤于软键盘的弹出窗⼝
容器作为弹出窗⼝显⽰在移动设备应⽤程序的顶部。Callout容器可以包含⼀个或多个接受键盘输⼊的组件。有关Callout容器的更多信
息,请参阅。
使⽤容器(Callout的⽗类)的属性配置弹出窗⼝与键盘的交互:
moveFo高考复习 rSoftKeyboard
如果为默认值true,弹出窗⼝将在键盘打开时移⾄键盘上⽅。
resizeForSoftKeyboard
如果为默认值true,弹出窗⼝将在键盘打开时调整⼤⼩以适合键盘上⽅的可⽤空间。
如果SkinnablePopUpContainer的moveForSoftKeyboard或resizeForSoftKeyboard属性设置为true,每当软键盘的可见性发⽣变化时,该容器都
可能移动或发⽣⼤⼩调整。这两种⾃动⾏为都可能导致其他组件移动或发⽣⼤⼩变化。
避免这种情况的最简单⽅法是不将resizeForSoftKeyboard设置为true。如果应⽤程序不会因软键盘⽽调整⼤⼩,则软键盘不会导致组件从⽤户
⼿指下的位置移开。但是,这会导致软键盘遮盖⼀些应⽤程序的UI。
如果应⽤程序需要⾃动调整⼤⼩,请置⼊交互式组件,这样,当在对其操作时,软键盘可见性的变化便不会导致其从⽤户⼿指的位置移开。
要做到这⼀点,需要以下技术:
不要为按钮、达到的英文 复选框或其他较⼩⽬标组件设置下约束,也不要将这些组件放置在设置了百分⽐⾼度的其他组件下⽅。
尝试将布局设计为当显⽰或隐藏键盘时最底层组件的顶部保持固定。
对于内置功能不能实现隐藏软键盘的平台,请提供⼀个固定的UI元素来实现该操作。这可以是专⽤于隐藏软键盘的按钮,也可以仅仅
是⾜够⼤的固定空⽩边缘(可以轻敲该边缘以将焦点从⽂本组件移开)。
不要垂直排列可能会移动的组件。这么做可能导致在软键盘的可见性发⽣变化时⼿势定位到错误的⽬标。
本文发布于:2023-03-20 22:28:48,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1679322529323548.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:键盘返回键是哪个.doc
本文 PDF 下载地址:键盘返回键是哪个.pdf
留言与评论(共有 0 条评论) |