diff --git a/apps/tests/ui/text-field/text-field-tests.ts b/apps/tests/ui/text-field/text-field-tests.ts index 22a26719f..d1cfcf555 100644 --- a/apps/tests/ui/text-field/text-field-tests.ts +++ b/apps/tests/ui/text-field/text-field-tests.ts @@ -6,6 +6,7 @@ import pagesModule = require("ui/page"); import textFieldTestsNative = require("./text-field-tests-native"); import colorModule = require("color"); import enums = require("ui/enums"); +import platform = require("platform"); // // # TextField @@ -116,6 +117,17 @@ export var testBindTextDirectlyToModel = function () { }); } +// Supported for ios only. +if (platform.device.os === platform.platformNames.ios) { + exports.test_set_color = function () { + helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array) { + var textField = views[0]; + textField.color = new colorModule.Color("red"); + TKUnit.assertEqual(textField.color.ios.CGColor, textField.ios.tintColor.CGColor, "textField.color"); + }); + } +} + export var testBindTextToBindingContext = function () { helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array) { var textField = views[0]; diff --git a/apps/tests/ui/text-view/text-view-tests.ts b/apps/tests/ui/text-view/text-view-tests.ts index 1c5b05cf6..78cde0533 100644 --- a/apps/tests/ui/text-view/text-view-tests.ts +++ b/apps/tests/ui/text-view/text-view-tests.ts @@ -6,6 +6,7 @@ import pagesModule = require("ui/page"); import textViewTestsNative = require("./text-view-tests-native"); import colorModule = require("color"); import enums = require("ui/enums"); +import platform = require("platform"); // // # TextView @@ -69,6 +70,17 @@ export var testSetText = function () { }); } +// Supported for ios only. +if (platform.device.os === platform.platformNames.ios) { + exports.test_set_color = function () { + helper.buildUIAndRunTest(_createTextViewFunc(), function (views: Array) { + var textView = views[0]; + textView.color = new colorModule.Color("red"); + TKUnit.assertEqual(textView.color.ios.CGColor, textView.ios.tintColor.CGColor, "textView.color"); + }); + } +} + export var testBindTextDirectlyToModel = function () { helper.buildUIAndRunTest(_createTextViewFunc(), function (views: Array) { var textView = views[0]; diff --git a/ui/styling/stylers.ios.ts b/ui/styling/stylers.ios.ts index c6a0e988d..0ded477d7 100644 --- a/ui/styling/stylers.ios.ts +++ b/ui/styling/stylers.ios.ts @@ -358,6 +358,7 @@ export class TextViewStyler implements definition.stylers.Styler { } else { textView.textColor = color; + textView.tintColor = color; } } @@ -379,6 +380,41 @@ export class TextViewStyler implements definition.stylers.Styler { } } +export class TextFieldStyler implements definition.stylers.Styler { + private static setColorProperty(view: view.View, newValue: any) { + var tf: UITextField = view._nativeView; + TextFieldStyler._setTextFieldColor(tf, newValue); + } + + private static resetColorProperty(view: view.View, nativeValue: any) { + var tf: UITextField = view._nativeView; + TextFieldStyler._setTextFieldColor(tf, nativeValue); + } + + private static _setTextFieldColor(tf: UITextField, newValue: any) { + var color: UIColor = newValue; + if ((tf).isShowingHint && color) { + tf.textColor = (color).colorWithAlphaComponent(0.22); + } + else { + tf.textColor = color; + tf.tintColor = color; + } + } + + private static getNativeColorValue(view: view.View): any { + var tf: UITextField = view._nativeView; + return tf.tintColor; + } + + public static registerHandlers() { + style.registerHandler(style.colorProperty, new stylersCommon.StylePropertyChangedHandler( + TextFieldStyler.setColorProperty, + TextFieldStyler.resetColorProperty, + TextFieldStyler.getNativeColorValue), "TextField"); + } +} + export class SegmentedBarStyler implements definition.stylers.Styler { //Text color methods private static setColorProperty(view: view.View, newValue: any) { @@ -585,6 +621,7 @@ export class SearchBarStyler implements definition.stylers.Styler { var sf = (view)._textField; if (sf) { sf.textColor = newValue; + sf.tintColor = newValue; } } @@ -592,6 +629,7 @@ export class SearchBarStyler implements definition.stylers.Styler { var sf = (view)._textField; if (sf) { sf.textColor = nativeValue; + sf.tintColor = nativeValue; } } @@ -735,4 +773,5 @@ export function _registerDefaultStylers() { TabViewStyler.registerHandlers(); ProgressStyler.registerHandlers(); SwitchStyler.registerHandlers(); + TextFieldStyler.registerHandlers(); }