回到顶部
您的当前位置: 编程语言> FLEX> FLEX基础> 进阶应用
Flex4中TextInput文本框禁止复制粘贴的问题
2014-06-05 02:02:33
标签: 原创 Flex4 TextInput 禁止 复制 粘贴
问题描述

2014年6月4日,客户反映,后台管理系统(Flex开发),弹出框鼠标右键,不显示复制、黏贴,但可以使用ctrl+c及ctrl+v的快捷键进行复制黏贴动作。

经测试发现,非弹出Panel的TextInput组件上鼠标右键是显示复制、黏贴的,但再弹出Panel上动态添加的TextInput是不显示的。

问题原因

百度之,找到类似问题,原因描述如下,原链接地址:http://bbs.9ria.com/thread-140980-1-1.html

Flex spark panel文本框右键菜单问题 spark panel 默认不支持右键复制粘贴。 Flex4中,放置在Spark Panel中的Spark文本框,右键不会出现复制粘贴菜单。 

经试验发现以下情况: 

单独使用s:TextInput在文本框中右键可以弹出包含复制粘贴的右键菜单,可正常复制粘贴(正常) 
单独运行mx:TextInput在文本框中右键可以弹出包含复制粘贴的右键菜单,可正常复制粘贴(正常) 
s:panel下放置一个s:TextInput在文本框中右键弹出右键菜单中没有复制粘贴(异常) 
s:panel下放置一个mx:TextInput在文本框中右键可以弹出包含复制粘贴的右键菜单,但是菜单的事件无响应,例如剪贴板中存在字符串“aaa”,通过菜单“复制”复制到文本框中,无法复制,但是通过CTRL+V可以(异常)
mx:panel下放置一个s:TextInput在文本框中右键可以弹出包含复制粘贴的右键菜单,可正常复制粘贴(正常)
mx:panel下放置一个mx:TextInput在文本框中右键可以弹出包含复制粘贴的右键菜单,可正常复制粘贴(正常)
解决方案

①设置s:panel对应的mouseEnabled为true

<s:Panel id="pop_panel" borderVisible="false" cornerRadius="5"
		 mouseEnabled="true"
		 creationComplete="EUtil.addCloseEventListener(this);"
		 skinClass="com.erim.core.skin.PanelSkin" styleName="fill">
</s:Panel>

②设置其皮肤PanelSkin的mouseEnabled为true

<s:SparkSkin 
   xmlns:fx="http://ns.adobe.com/mxml/2009" 
   xmlns:s="library://ns.adobe.com/flex/spark" 
   xmlns:fb="http://ns.adobe.com/flashbuilder/2009" 
   blendMode="normal" mouseEnabled="true" 
   minWidth="131" minHeight="127" alpha.disabled="0.5" 
   alpha.disabledWithControlBar="0.5">
</s:SparkSkin>
解决前后截图

①问题处理之前

②问题处理之后