2010-07-27 29 views
5

Tôi đang cố gắng có cửa sổ bật lên với TextInput có thể chỉnh sửa ngay lập tức. Điều này có nghĩa là người dùng có thể nhập vào bên trong TextInput khi cửa sổ bật lên được hiển thị.Đặt tiêu điểm trên điều khiển nhập văn bản của Popup

Vấn đề là tôi không thể tập trung vào textInput. Điều gì xảy ra là khi nhấn một phím lần đầu tiên, không có văn bản nào được chèn vào, chỉ sau khi nhấn một phím thứ hai thì thành phần đó sẽ lấy nét và người dùng có thể nhập. Ví dụ: nhập "kiểm tra" khi cửa sổ bật lên mở kết quả "est" đang hiển thị ...

Vì lý do nào đó, thành phần chỉ lấy tiêu điểm khi người dùng nhấp vào một cách rõ ràng hoặc nhập thứ gì đó. Programmaticaly thiết lập tiêu điểm không hoạt động.

Bất kỳ ý tưởng/đề xuất nào?

Code:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Panel xmlns="mog.miss.component.*" xmlns:mx="http://www.adobe.com/2006/mxml" > 

<mx:Script> 
    <![CDATA[ 
     import mx.managers.IFocusManagerComponent; 

     private function focus():void{ 
      focusManager.setFocus(commentTextInput as IFocusManagerComponent); 
      commentTextInput.setSelection(commentTextInput.text.length,commentTextInput.text.length); 
     } 

    ]]> 
</mx:Script> 
<mx:TextInput id="commentTextInput" creationComplete="{focus()}" /> 

</mx:Panel> 
+0

làm bạn phải là nguồn gốc của các popup – Grumpy

Trả lời

2

Vấn đề là tôi đã kích hoạt cuộc gọi bật lên bằng phím F10. F10 là hệ thống dành riêng ... nó đã kích hoạt trình xử lý và cửa sổ bật lên được tạo ra nhưng bằng cách nào đó ứng dụng đã mất tập trung. Sử dụng một khóa khác đã sửa nó. Khóa dành riêng duy nhất là F10. More about that

0

Nó phụ thuộc vào cách bạn cố gắng làm điều đó. Điều gì làm việc cho tôi là xử lý các tổ chức sự kiện creationComplete của popup:

private function onCreationComplete():void 
{ 
    focusManager.setFocus(this.mytextInput as IFocusManagerComponent); 
} 

PS: Các "xử lý" trong ví dụ được thêm qua mxml nên nó không có thông số.

+0

Điều đó không làm việc như mong đợi ... –

+0

Ra khỏi tò mò những gì hệ điều hành và trình duyệt bạn đang sử dụng? –

0

Đây là những gì phù hợp với tôi. Trong sự kiện creationComplete của cửa sổ bật lên:

private function onCreationComplete():void 
{ 
    callLater(this.commentTextInput.setFocus); 
} 
+0

Điều đó có tác dụng ... vấn đề hoàn toàn khác. Tôi đã sử dụng phím F10 để kích hoạt cửa sổ bật lên. Nó chỉ xảy ra rằng F10 là hệ thống dành riêng. Sử dụng một phím khác hoạt động tốt. –

0

trong trường hợp của tôi, tôi chỉ thực hiện IFocusManagerContainer trong thành phần tùy chỉnh của tôi và tất cả mọi thứ đã làm việc tốt

tin var _defaultButton: IFlexDisplayObject =/thành phần mặc định /;

public function get defaultButton():IFlexDisplayObject{ 
     return _defaultButton; 
    } 
    public function set defaultButton(value:IFlexDisplayObject):void{ 
     _defaultButton = value; 
     ContainerGlobals.focusedContainer = null; 
    } 
Các vấn đề liên quan