禁用Flex 3中文本字段的滚动属性

时间:2011-05-23 14:00:57

标签: flex macos text safari

在Mac OS X,Safari 4.0.2浏览器中,文本字段内容可滚动。如何停止文本字段的滚动属性?

我已经明确提到它的宽度而不是高度。应在可用区域内相应地重新调整文本大小。请任何人提供解决方案。

1 个答案:

答案 0 :(得分:0)

我过去曾使用此AutoResizeTextArea component来满足此要求。只需将autoResize属性设置为true

<?xml version="1.0" encoding="utf-8"?>
<mx:TextArea xmlns:mx="http://www.adobe.com/2006/mxml">
     <mx:Script>
          <![CDATA[

               // auto resize setting
               private var _autoResizable:Boolean = false;

               // getter
               [Bindable(event="changeAutoResize")]
               public function get autoResize():Boolean
               {
                    return _autoResizable;
               }

               // setter
               public function set autoResize(b:Boolean):void
               {
                    _autoResizable = b;
                    // if the text field component is created
                    // and is auto resizable
                    // we call the resize method
                    if (this.mx_internal::getTextField() != null && 
                         _autoResizable == true)
                         resizeTextArea();
                    // dispatch event to make the autoResize 
                    // property bindable
                    dispatchEvent(new Event("changeAutoResize"));
               }

               // setter override
               override public function set text(value:String):void
               {
                    // calling super method 
                    super.text = value;
                    // if is auto resizable we call 
                    // the resize method
                    if (_autoResizable)
                         resizeTextArea();
               }

               // resize function for the text area
               private function resizeTextArea():void
               {
                    // initial height value
                    // if set to 0 scroll bars will 
                    // appear to the resized text area 
                    var totalHeight:uint = 10;
                    // validating the object
                    this.validateNow();
                    // find the total number of text lines 
                    // in the text area
                    var noOfLines:int = this.mx_internal::getTextField().numLines;
                    // iterating through all lines of 
                    // text in the text area
                    for (var i:int = 0; i < noOfLines; i++) 
                    {
                         // getting the height of one text line
                         var textLineHeight:int = 
                             this.mx_internal::getTextField().getLineMetrics(i).height;
                         // adding the height to the total height
                         totalHeight += textLineHeight;
                    }
                    // setting the new calculated height
                    this.height = totalHeight;
               }
          ]]>
     </mx:Script>
</mx:TextArea>