2017-02-02 10 views
0
UITextFieldDelegateImpl.prototype.textFieldDidEndEditing = function (textField) { 
    var owner = this._owner.get(); 
    if (owner) { 
     if (owner.updateTextTrigger === enums_1.UpdateTextTrigger.focusLost) { 
      owner._onPropertyChangedFromNative(text_base_1.TextBase.textProperty, textField.text); 
     } 
     owner.dismissSoftInput(); 
     if (owner.formattedText) { 
      owner.formattedText.createFormattedStringCore(); 
     } 
    } 
}; 

Описанный выше метод ядра вызывается всякий раз, когда в конце текстовое поле ввода, я попытался с перезаписью метод на моей странице,Nativescript textFieldDidEndEditing делегат на textfiels

TextField._delegate.textFieldDidEndEditing = function() {}; 
TextField.ios.delegate.textFieldDidEndEditing = function() {}; 

но это не тренировка.

Примечание: Я ищу альтернативное решение для получения события редактирования конца текстового поля (не изменение свойства с наблюдаемым).

Использование: Значение текстового поля должно быть между несколькими диапазонами от 5 до 50, если оно не находится в этом диапазоне, я должен показать всплывающее окно и заставить пользователя выбрать значение из списка.

В вышеприведенном случае смена работоспособности изменяется, например, если пользователь хочет ввести 15, сначала они будут вводить 1, после чего они будут набирать 5, поэтому каждый раз проверка не поможет в вышеуказанном случае.

ответ

2

Я заметил, что вы упомянули, что хотите использовать другой способ обработки потерянного фокуса textField.

Однако в NativeScirpt лучший способ сделать это - установить updateTextTrigger на focusLost и обработать свойство TextFieldChange. Я прилагаю пример кода:

xml

<Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="navigatingTo"> 
    <StackLayout class="p-20"> 
     <TextField hint="Field 1" updateTextTrigger="focusLost" id="tx" /> 
     <TextField hint="Field 2" /> 
    </StackLayout> 
</Page> 

typescript

import { EventData, PropertyChangeData } from 'data/observable'; 
import { Page } from 'ui/page'; 
import { HelloWorldModel } from './main-view-model'; 
import {Observable} from "data/observable"; 
import {TextField} from "ui/text-field"; 

export function navigatingTo(args: EventData) { 
    /* 
    This gets a reference this page's <Page> UI component. You can 
    view the API reference of the Page to see what's available at 
    https://docs.nativescript.org/api-reference/classes/_ui_page_.page.html 
    */ 
    let page = <Page>args.object; 
    var textfield:TextField = <TextField>page.getViewById("tx"); 
    textfield.on("propertyChange", ((args: PropertyChangeData) => { 
     var tField:TextField = <TextField>args.object; 
     console.log(tField.text); 
    })); 
} 

Применительно к данной теме, не могли бы вы предоставить более подробную информацию о необходимости альтернативного способа обработки TextField фокус теряется, скорее использовать наблюдаемое изменение свойств.

+0

Прежде всего спасибо @Nikolay за обновлениеTextTrigger, я не знал об этом методе. Я обновил описание, почему я ищу changechange. – Niyaz

+1

@ Ниляз, 'свойствоChange' будет запущен только на фокус, потерянный. В методе обратного вызова вы можете проверить текст 'TextField'' length' и показать «ListPicker», если это необходимо –

+0

Прохладно это сработало, спасибо – Niyaz

 Смежные вопросы

  • Нет связанных вопросов^_^