我得到一個奇怪的行爲,爲textViewDidChangeSelection委託中的textView設置selectedRange屬性。TextViewDidChangeSelection中奇怪的UItextView行爲設置範圍
我在viewDidLoad中的代碼是:
hiddenTextView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)];
//[hiddenTextView setHidden:YES];
[email protected]"ulrd";
hiddenTextView.text = _hiddenTextViewText;
hiddenTextView.delegate = self;
_hiddenTextViewDefaultRange = NSMakeRange(2,0);
hiddenTextView.selectedRange = _hiddenTextViewDefaultRange; //horizontal and vertical center of the textview
[self.view addSubview:hiddenTextView];
[hiddenTextView becomeFirstResponder];
if (_keyboardShown)
[hiddenTextView resignFirstResponder];
我定義textViewDidChangeSelection如下:
- (void)textViewDidChangeSelection:(UITextView *)textView {
NSLog(@"%lu",(unsigned long)textView.selectedRange.location);
if (textView.selectedRange.location != _hiddenTextViewDefaultRange.location)
{
hiddenTextView.selectedRange = _hiddenTextViewDefaultRange;
}
}
我設置一個4個字符的文本,並把在位置2(中間)選擇指標。結果是,如果我在模擬器NSLog中按下鍵盤上的箭頭,輸出0(文本開始)然後2(重新設置位置),這是正確的。如果我再次按下它,它仍然是正確的。問題是,如果我點擊了x次,我必須在等到文本結尾(位置4)之前平均擊球。 我試圖用UIButton重置位置,而不是以編程方式進行,並且它工作正常。有任何想法嗎?
您是否將鍵盤連接到真實設備並進行了測試?如果只發生在模擬器中,則無關緊要。 –
剛剛嘗試過。使用藍牙鍵盤的iPad也會發生同樣的情況。 –