具有不同旋转值的多个文本区域导致边框非常非常错误

Posted

技术标签:

【中文标题】具有不同旋转值的多个文本区域导致边框非常非常错误【英文标题】:Multiple text areas with different rotation values causes borders to be very very wrong 【发布时间】:2009-11-05 05:01:08 【问题描述】:

如果您有两个文本区域,一个具有除 0 之外的旋转值,另一个没有旋转值或值为 0,并且您将焦点从带旋转的一个“标签”聚焦到不带旋转的那个。没有旋转的 textArea 周围的边框将被旋转。如果将非旋转文本字段的旋转值设置为非零数字,甚至 0.01,它可以解决问题,但这会导致文本渲染中出现大量其他问题,因此它不是解决方案。

我发现将 focusThickness 样式设置为 0 会删除边框,这是一个很好的解决方案,但不是很好,有人有更好的解决方案吗?下面是一些示例代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:VBox  >
    <mx:TextArea id="source"  fontWeight="bold" fontSize="20"  rotation="5" />
    <mx:TextArea id="dest"   />
</mx:VBox>

这是它的样子: alt text http://img.skitch.com/20091105-fftxukst1ncggynekatj6937nn.jpg

【问题讨论】:

好的,我想出了如何将边框大小设置为 0,这样它就不会显示,但希望有更好的解决方案。 这是一个有趣的错误。在纠结了一会儿之后,我认为除了提交错误报告之外您无能为力。 【参考方案1】:

这是一个扩展 TextArea 并覆盖 adjustFocusRect 方法来修复此错误的类。

package

    import flash.display.DisplayObject;
    import flash.geom.Point;

    import mx.controls.TextArea;
    import mx.core.IFlexDisplayObject;
    import mx.core.IInvalidating;
    import mx.core.IProgrammaticSkin;
    import mx.core.mx_internal;
    import mx.managers.IFocusManager;
    import mx.styles.IStyleClient;

    use namespace mx_internal;

    public class TextArea2 extends TextArea
    
        override protected function adjustFocusRect(obj:DisplayObject = null):void
        
            super.adjustFocusRect(obj);

            var focusObj:IFlexDisplayObject = IFlexDisplayObject(getFocusObject());
            if (focusObj)
            
                if ( !rotation ) 
                    DisplayObject(focusObj).rotation = 0;
                
            
        
    

【讨论】:

以上是关于具有不同旋转值的多个文本区域导致边框非常非常错误的主要内容,如果未能解决你的问题,请参考以下文章

如何为具有相同名称的多个文本区域添加ckeditor

多个 Summernote 文本区域字段

将值插入光标所在的最后一个文本区域

具有自动调整大小的多个文本区域在 ionic3 中不起作用

更新文本区域

应用边框半径时,无法在 Chrome 中抓取水平文本区域滚动条