我的問題是編程設定的UITextView 的選擇的selectedRange的文字,但不沒有顯示在視覺上表示它的選擇。這聽起來像是OS 3.0/3.1中的一個錯誤嗎?更重要的是,任何解決方案或建議讓選擇顯示? (示例項目鏈接在消息的底部)的UITextView時的selectedRange設置編程
我怎麼知道它被選中,因爲我沒有獲得視覺反饋?兩個原因:
- 無閃爍的光標
- 輕敲鍵盤上的任意鍵刪除現有的在選擇範圍內的文本。
我在viewcontroller中有一個UITextView允許編輯用戶可更改的值。編輯器控制器在表格行上接收到雙擊時打開,或者用戶輕敲一行上的詳細信息顯示按鈕。該視圖 - 控制通過presentModalViewController到達,並在編輯器VC的viewWillAppear中的方法,我發起了鍵盤與[self.textView becomeFirstResponder];
有時我想開始與所選的TextView的全部內容編輯器,使用戶可以簡單地開始打字,它會刪除現有內容(這是因爲我使用默認標題創建了新項目,所以幾乎可以肯定用戶將首先刪除編輯器文本字段的全部內容,然後鍵入它們的標題)。
一些我已經嘗試過的事情:
- 設置在viewDidAppear所選擇的範圍內(而不是在除了textViewDidBeginEditing這樣做)。
- 用其中的文本替換_textView.text,然後應用selectedRange(在textViewDidBeginEditing)...思考也許如果我正在處理框架錯誤,這可能會解決它。
[[_textView webView] selectAll];
(private api)。相同的行爲,文本被選中而沒有視覺反饋。- 發送_textView setNeedsDisplay和setNeedsLayout。
- 使用performSelector ... afterDelay來設置selectedRange,以便它在退出textViewDidBeginEditing之後發生。
// UITextFieldDelegate Methods...
- (void)textViewDidBeginEditing:(UITextView *)_textView
{
NSInteger len = [_textView.text length];
if(self.selectInitialText){
//NOTE: this is not working as expected. Indeed the text is
// selected but the highlighting of the text isn't showing.
_textView.selectedRange = NSMakeRange(0,len);
}
}
- 編輯 -
這裏提交給蘋果BugReporter示例項目。Download BugReport_7380723 sample project
附加信息:
在創建和使用示例項目提交玩,我發現了兩件事情:
時,有選定文本,但顯示沒有亮點,挖掘一些按鍵,然後「搖動撤消「並恢復原始文本,但突出顯示IS。
如果手動使TextView的選擇,然後點擊「全選」按鈕[指上面鏈接示例項目],所有文本被選中和顯示器的亮點正常。
感謝您的解決方法建議。但在這種情況下它確實不是佔位符。我有一個具有特定可編輯「標題」的實體;當字段「打開」進行編輯時,佔位符將消失。我的文本應該保留,但表示它已被選中,因此鍵盤操作將取代選擇,或者他們需要點擊字段以殺死選擇。此外,任何種類的支持選擇的小部件都應該指明選擇的狀態,所以這可能是一個錯誤(我在這裏發佈後立即提交了一個錯誤報告)。我更感興趣的是可以讓選擇顯示的解決方法。謝謝。 – wkw 2009-11-10 18:32:28