2016-05-23 8 views
0

Ich muss eine web/browserbasierte Funktionalität nachahmen, bei der ein Unschärfeereignis verwendet wird, um eine Post-Eingabe-Feld-Behandlung auszulösen.Wie bekomme ich ein Unschärfeereignis mit Nativescript (IOS)?

Allerdings benutze ich ein TextField mit Nativescript habe ich nur das "ReturnPress" -Ereignis (soweit ich aus der UITextFieldDelegateImpl-Klasse Quelle sehen kann). Dieses Ereignis funktioniert, ist aber nicht das, was ich brauche.

Es gibt einige interessanten Codes obwohl dort, vor allem der textFieldDidEndEditing Methode:

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

     owner.dismissSoftInput(); 
    } 
} 

Es sieht aus wie dies der Ort sein sollte, ein Unschärfe-Ereignis ausgelöst, aber vielleicht gibt es eine andere Art und Weise zu tun, was ich brauche ohne den Framework-Code zu stören.

Antwort

0

Ich habe ein wenig Forschung und fand, dass Sie Observable.propertyChangeEvent und die GestureModule verwenden könnten. Die nächsten Code-Snippets zeigen den erwähnten Ansatz.

Haupt 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> 

Haupt 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

Es hat mich einige Zeit gedauert, um herauszufinden, was Sie wie ich TS Syntax bin viel mehr wurden verwendet, um zu tun, aber ich habe das Gefühl, dass ich dadurch zumindest weiß, welches Feld aktiv ist (oder aktiviert ist) und mir eine Möglichkeit gibt, dagegen zu programmieren. Ich werde es versuchen. Nicht so einfach wie ein Unschärfe-Event, aber momentan denke ich, dass es nicht viel besser ist. Thnx – majodi

Verwandte Themen