问题描述
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>
解决前后截图
①问题处理之前
②问题处理之后