【发布时间】:2015-11-04 20:34:18
【问题描述】:
我正在构建一个 Xamarin ios 应用程序,并且已经测试了一段时间,但在发布模式下测试时遇到了问题。当用户开始在文本字段中输入答案时,我会更改文本字段的背景颜色和文本颜色。这是我的代码:
set.Bind (currencyText).For (x => x.BackgroundColor).To (vm => vm.AnswerViewColor).WithConversion ("NativeColor");
set.Bind (currencyText).For (x => x.TextColor).To (vm => vm.AnswerTextColor).WithConversion ("NativeColor");
在我测试过的任何设备上的调试模式下都可以正常工作。在模拟器上的调试模式下,我收到以下错误,尽管背景颜色变化正常,但文本颜色没有改变:
MvxBind:Warning: 66.81 无法为 AnswerTextColor 绑定 TextColor 创建目标绑定
在发布模式下,它似乎也不起作用,因为我的文本颜色保持白色,所以我的假设是我在那里也遇到了同样的错误/警告。有任何想法吗?我还尝试将我的链接器行为从“仅链接 SDK 程序集”更改为“链接所有程序集”,这在发布模式下也没有任何帮助。
当我最初构建它时,我也遇到了这个问题并浏览了以下链接:
MvvmCross Failed to create target binding for EditingDidBegin on iPhone
所以我在下面添加了这个,它在很大程度上解决了我的问题,但导致了我现在所处的位置。
例如包含类似https://github.com/slodge/NPlus1DaysOfMvvmCross/blob/master/N-38-Maps/Mappit.Touch/LinkerPleaseInclude.cs 的文件,方法如下:
public void Include(UITextField textField)
{
textField.Text = textField.Text + "";
textField.EditingChanged += (sender, args) => { textField.Text = ""; };
textField.EditingDidBegin += (sender, args) => { textField.Text = ""; };
textField.EditingDidBegin -= (sender, args) => { textField.Text = ""; };
}
这是我的第一个应用程序,因此我们将不胜感激。希望这是我错过的简单事情。
【问题讨论】:
-
将 NativeColorConverter 添加到 LinkerPleaseInclude.cs 是否有效?
-
我不确定我是否理解。能举个例子吗?
-
您将 NativeColorConverter 称为字符串。也许链接器删除了这个类。因此,您应该在 Include 方法中添加类似 new NativeColorConverter() 的内容,以防止链接器忽略该类。不知道能不能解决你的问题。
-
感谢 cmets,但我从 Xamarin 网站发布了答案。
标签: xamarin uitextfield mvvmcross