mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-26 11:17:04 +08:00
feat(core): setSelection method for editable text components (#9175)
This commit is contained in:
@ -23,6 +23,7 @@ export abstract class EditableTextBase extends TextBase implements EditableTextB
|
|||||||
|
|
||||||
public abstract dismissSoftInput();
|
public abstract dismissSoftInput();
|
||||||
public abstract _setInputType(inputType: number): void;
|
public abstract _setInputType(inputType: number): void;
|
||||||
|
public abstract setSelection(start: number, stop?: number);
|
||||||
|
|
||||||
private _focusHandler = () => this._goToVisualState('focus');
|
private _focusHandler = () => this._goToVisualState('focus');
|
||||||
private _blurHandler = () => this._goToVisualState('blur');
|
private _blurHandler = () => this._goToVisualState('blur');
|
||||||
|
@ -144,6 +144,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
|||||||
/* tslint:enable */
|
/* tslint:enable */
|
||||||
|
|
||||||
nativeViewProtected: android.widget.EditText;
|
nativeViewProtected: android.widget.EditText;
|
||||||
|
nativeTextViewProtected: android.widget.EditText;
|
||||||
private _keyListenerCache: android.text.method.KeyListener;
|
private _keyListenerCache: android.text.method.KeyListener;
|
||||||
private _inputType: number;
|
private _inputType: number;
|
||||||
|
|
||||||
@ -466,4 +467,15 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
|||||||
this.nativeTextViewProtected.setFilters(newFilters);
|
this.nativeTextViewProtected.setFilters(newFilters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public setSelection(start: number, stop?: number) {
|
||||||
|
const view = this.nativeTextViewProtected;
|
||||||
|
if (view) {
|
||||||
|
if (stop !== undefined) {
|
||||||
|
view.setSelection(start, stop);
|
||||||
|
} else {
|
||||||
|
view.setSelection(start);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,6 +64,11 @@ export class EditableTextBase extends TextBase {
|
|||||||
*/
|
*/
|
||||||
public _setInputType(inputType: number): void;
|
public _setInputType(inputType: number): void;
|
||||||
//@endprivate
|
//@endprivate
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the selection anchor to start and the selection edge to stop
|
||||||
|
*/
|
||||||
|
public setSelection(start: number, stop?: number);
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ReturnKeyType = 'done' | 'next' | 'go' | 'search' | 'send';
|
export type ReturnKeyType = 'done' | 'next' | 'go' | 'search' | 'send';
|
||||||
|
@ -5,6 +5,7 @@ export * from './editable-text-base-common';
|
|||||||
|
|
||||||
export abstract class EditableTextBase extends EditableTextBaseCommon {
|
export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||||
public nativeViewProtected: UITextField | UITextView;
|
public nativeViewProtected: UITextField | UITextView;
|
||||||
|
public readonly nativeTextViewProtected: UITextField | UITextView;
|
||||||
public dismissSoftInput() {
|
public dismissSoftInput() {
|
||||||
this.nativeTextViewProtected.resignFirstResponder();
|
this.nativeTextViewProtected.resignFirstResponder();
|
||||||
this.notify({ eventName: EditableTextBase.blurEvent, object: this });
|
this.notify({ eventName: EditableTextBase.blurEvent, object: this });
|
||||||
@ -189,6 +190,21 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
|||||||
|
|
||||||
this.nativeTextViewProtected.autocorrectionType = newValue;
|
this.nativeTextViewProtected.autocorrectionType = newValue;
|
||||||
}
|
}
|
||||||
|
public setSelection(start: number, stop?: number) {
|
||||||
|
const view = this.nativeTextViewProtected;
|
||||||
|
if (view) {
|
||||||
|
if (stop !== undefined) {
|
||||||
|
const begin = view.beginningOfDocument;
|
||||||
|
const fromPosition = view.positionFromPositionOffset(begin, start);
|
||||||
|
const toPosition = view.positionFromPositionOffset(begin, stop);
|
||||||
|
view.selectedTextRange = view.textRangeFromPositionToPosition(fromPosition, toPosition);
|
||||||
|
} else {
|
||||||
|
const begin = view.beginningOfDocument;
|
||||||
|
const pos = view.positionFromPositionOffset(begin, start);
|
||||||
|
view.selectedTextRange = view.textRangeFromPositionToPosition(pos, pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function _updateCharactersInRangeReplacementString(formattedText: FormattedString, rangeLocation: number, rangeLength: number, replacementString: string): void {
|
export function _updateCharactersInRangeReplacementString(formattedText: FormattedString, rangeLocation: number, rangeLength: number, replacementString: string): void {
|
||||||
|
Reference in New Issue
Block a user