tes*_*ing 2 xamarin dependency-resolver xamarin.forms
在文档中明确指出您需要为所有平台实现:
您必须在每个平台项目中提供一个实现。如果没有注册接口实现,则将
DependencyService无法Get<T>()在运行时解析该方法。
我没有提供实现,所以应用程序崩溃了。但是如果我不需要该平台的实现,我该怎么办?提供这样的无体方法?
public void HideKeyboard()
{
// We need an implementation for the DependencyService, even it is empty.
}
Run Code Online (Sandbox Code Playgroud)
我应该提供一个实现吗?
public void HideKeyboard()
{
try
{
InputPane myInputPane = InputPane.GetForCurrentView();
myInputPane.TryHide();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
还是DependencyService这里使用了错误的选项?
我假设你不需要在一个平台上实现,但这样做对其他。
基本上你可以做两件事:
如果你只在 iOS 上需要它,就在你的共享代码中这样做:
if (Device.RuntimePlatform == Device.iOS)
DependencyService.Get<IKeyboardService>().HideKeyboard();
Run Code Online (Sandbox Code Playgroud)
这样你就不会用多余的类来乱扔代码。您确实需要在要执行此代码的所有位置添加它。所以这里有什么更好的选择取决于你。
使用 DependencyService 并没有错,而且实际上是实现这种平台特定功能的唯一方法。
| 归档时间: |
|
| 查看次数: |
241 次 |
| 最近记录: |