我的表单上有一个MX TextInput字段。由于我们的一个用户有闪烁光标的癫痫发作问题,我试图禁用它但没有成功。通过控制面板,我可以防止Office应用程序和Web浏览器中的光标闪烁,但不能阻止使用Flash Player的Flex应用程序。有没有人遇到这个问题并有解决方案?
答案 0 :(得分:0)
这是一个将光标全部移除的简单解决方案。我不确定你是否要删除光标(可行)或停止光标闪烁(似乎不太可行)。
它的工作原理是将基础TextField
对象的selectable
属性设置为false。 MX TextInput
类具有自己的selectable
属性,但TextInput
中的代码也要求editable
属性为false才能禁用选择。所以你需要扩展TextInput来解决这个问题。
底层TextField没有公开任何属性来阻止光标闪烁(我知道)。 TextField
是Flash Player的内置类之一,因此修改此低级行为的可能性似乎很小。
这显然会破坏TextInput
中复制/粘贴的能力。您可能需要设计一种临时启用选择以支持复制/粘贴或一般选择文本的方法。
package
{
import mx.controls.TextInput;
public class CustomTextInput extends TextInput
{
public function CustomTextInput()
{
}
private var _hideCursor:Boolean = true;
private var hideCursorChanged:Boolean = true;
public function get hideCursor():Boolean
{
return _hideCursor;
}
public function set hideCursor(value:Boolean):void
{
if (value == hideCursor)
{
return;
}
hideCursorChanged = true;
_hideCursor = value;
invalidateProperties();
}
override protected function commitProperties():void
{
super.commitProperties();
if (hideCursorChanged)
{
hideCursorChanged = false;
textField.selectable = !_hideCursor;
}
}
}
}