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 _setInputType(inputType: number): void;
|
||||
public abstract setSelection(start: number, stop?: number);
|
||||
|
||||
private _focusHandler = () => this._goToVisualState('focus');
|
||||
private _blurHandler = () => this._goToVisualState('blur');
|
||||
|
@ -144,6 +144,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||
/* tslint:enable */
|
||||
|
||||
nativeViewProtected: android.widget.EditText;
|
||||
nativeTextViewProtected: android.widget.EditText;
|
||||
private _keyListenerCache: android.text.method.KeyListener;
|
||||
private _inputType: number;
|
||||
|
||||
@ -466,4 +467,15 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||
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;
|
||||
//@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';
|
||||
|
@ -5,6 +5,7 @@ export * from './editable-text-base-common';
|
||||
|
||||
export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||
public nativeViewProtected: UITextField | UITextView;
|
||||
public readonly nativeTextViewProtected: UITextField | UITextView;
|
||||
public dismissSoftInput() {
|
||||
this.nativeTextViewProtected.resignFirstResponder();
|
||||
this.notify({ eventName: EditableTextBase.blurEvent, object: this });
|
||||
@ -189,6 +190,21 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||
|
||||
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 {
|
||||
|
Reference in New Issue
Block a user