2016-05-23 5 views
0

Web /ブラウザベースの機能を模倣する必要があります。ここでは、ぼかしイベントを使用していくつかのポストエントリフィールドの処理をトリガします。Nativescript(IOS)でぼかしイベントを取得する方法

しかし、NativescriptでTextFieldを使用すると、「returnPress」イベント(UITextFieldDelegateImplクラスのソースから見ることができる限り)しかありません。このイベントは機能しますが、必要なものではありません。いくつかの興味深いコードは、特にtextFieldDidEndEditing方法、けれどもそこにあり

public textFieldDidEndEditing(textField: UITextField) { 
    let owner = this._owner.get(); 
    if (owner) { 
     if (owner.updateTextTrigger === UpdateTextTrigger.focusLost) { 
      owner._onPropertyChangedFromNative(TextBase.textProperty, textField.text); 
     } 

     owner.dismissSoftInput(); 
    } 
} 

これはblurイベントを発射する場所でなければなりませんように見えますが、多分私は必要なものを達成するために他のいくつかの方法がありますフレームワークコードを乱すことなく

答えて

0

少し調査したところ、Observable.propertyChangeEventGestureModuleを使用できることがわかりました。次のコードスニペットは、前述のアプローチを示しています。

メインpage.xml

<Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="navigatingTo" loaded="loaded"> 
    <StackLayout id="stack"> 
    <Label text="Test" textWrap="true" id="label"/> 

    <TextField returnKeyType="done" updateTextTrigger="focusLost" hint="text" id="textfield" text="{{ textfield }}" autocorrect="false" autocapitalizationType="none" /> 
    <TextField hint="test2" text="{{ }}" id="textfield2"/> 

    </StackLayout> 
</Page> 

メインpage.js

var observable_1 = require("data/observable"); 
var gestures_1 = require('ui/gestures'); 
var textFieldEmail; 

function loaded(args) { 
    var page = args.object; 
    var textField = page.getViewById("textfield"); 
    var stackLayout = page.getViewById("stack"); 
    var observable = new observable_1.Observable(); 
    observable.addEventListener(observable_1.Observable.propertyChangeEvent, function (pcd) { 
     console.log(pcd.eventName.toString() + " " + pcd.propertyName.toString() + " " + pcd.value.toString()); 
    }); 
    stackLayout.on(gestures_1.GestureTypes.tap, function (args) { 
     console.log("Tap"); 
     if (page.ios) { 
      textField.ios.resignFirstResponder(); 
     } 
     else { 
      textField.android.clearFocus(); 
     } 
    }); 
    page.bindingContext = observable; 
} 
exports.loaded = loaded; 
+0

私はTS構文にずっと使用していますように、それはあなたがやっていたかを把握するために私にいくつかの時間がかかったけどこれは少なくとも、どのフィールドがアクティブ(またはアクティブ化されているか)を知る方法を提供し、それに対してコード化する方法を私に与えるという気持ちを得る。私はそれを試してみましょう。ブラーイベントほどシンプルではありませんが、今のところはあまり良くないと思います。 Thnx – majodi

関連する問題