[英]Moving the cursor to the beginning of UITextField
有沒有辦法讓光標位於UITextField的開頭?
當我用內容顯示控件時,光標位於字符串的末尾。 我想把它移到開頭。
UITextField
符合UITextInput
協議,該協議提供允許您控制所選范圍的方法。 這適用於我的測試:
-(void)textFieldDidBeginEditing:(UITextField *)textField {
textField.selectedTextRange = [textField
textRangeFromPosition:textField.beginningOfDocument
toPosition:textField.beginningOfDocument];
}
你正在打這個系統。 UITextField
沒有任何公共屬性來設置光標位置(實際上與當前選擇的開頭相關)。 如果您可以使用UITextView
,則以下委托方法將強制光標到文本的開頭。 請注意,用戶不會期望這種行為,您應該仔細檢查您想要這樣做的動機。
- (void)textViewDidBeginEditing:(UITextView *)textView {
shouldMoveCursor = YES;
}
- (void)textViewDidChangeSelection:(UITextView *)textView {
if(shouldMoveCursor)
{
NSRange beginningRange = NSMakeRange(0, 0);
NSRange currentRange = [textView selectedRange];
if(!NSEqualRanges(beginningRange, currentRange))
[textView setSelectedRange:beginningRange];
shouldMoveCursor = NO;
}
}
shouldMoveCursor
是您在控制器中維護的BOOL
變量。
適合我
// Get current selected range , this example assumes is an insertion point or empty selection
UITextRange *selectedRange = [textField selectedTextRange];
// Calculate the new position, - for left and + for right
UITextPosition *newPosition = [textField positionFromPosition:selectedRange.start offset:3];
// Construct a new range using the object that adopts the UITextInput, our textfield
UITextRange *newRange = [textField textRangeFromPosition:newPosition toPosition:newPosition];
// Set new range
[textField setSelectedTextRange:newRange];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.