私は、PlatformEffectを添付するのに問題があると思います。それは解決していますが、添付していないようです。ここPlatformEffectはEffectTestLib.iOS
という名前のiOSライブラリプロジェクトである:だからPlatformEffectに添付できませんでしたか?
using System;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ResolutionGroupName ("MyCompany")]
[assembly: ExportEffect (typeof (EffectTestLib.iOS.MyEffect), "MyEffect")]
namespace EffectTestLib.iOS {
public class MyEffect : PlatformEffect {
protected override void OnAttached() {
System.Diagnostics.Debug.WriteLine ("Effect Attached");
throw new NotImplementedException();
}
protected override void OnDetached() {
throw new NotImplementedException();
}
protected override void OnElementPropertyChanged (System.ComponentModel.PropertyChangedEventArgs args) {
base.OnElementPropertyChanged (args);
}
}
}
、それが接続されている場合、それは出力「効果は添付」とNotImplementedException
をスローする必要があります。私はそれが解決されていることを確認するために、アプリケーションの出力にPlatformEffectを書いています
using Xamarin.Forms;
namespace EffectTest {
public class App : Application {
public App() {
MainPage = new ContentPage {
Content = new StackLayout {
VerticalOptions = LayoutOptions.Center,
Children = {
new Label {
XAlign = TextAlignment.Center,
Text = "Welcome to Xamarin Forms!"
}
}
}
};
var effect = Effect.Resolve ("MyCompany.MyEffect");
System.Diagnostics.Debug.WriteLine ("effect=[{0}]",effect);
MainPage.Effects.Add(effect);
}
}
}
注意:ここで
このPlatformEffectを使用するアプリケーションのためのPCLコードです。解決できない場合は、effect=[Xamarin.Forms.NullEffect]
が表示されます。
アプリケーションiOSプラットフォームのコードは次のとおりです。 using System; using System.Collections.Generic; using System.Linq; Foundationを使用している ; UIKitを使用します。
namespace EffectTest.iOS
{
[Register ("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
new EffectTestLib.iOS.MyEffect();
LoadApplication (new App());
return base.FinishedLaunching (app, options);
}
}
}
私のライブラリがロードされていることを確認するには、new EffectTestLib.iOS.MyEffect();
に電話しています。
また、iOSプラットフォームプロジェクトにはEffectTestLib.iOS
ライブラリへの参照が含まれています。
私はアプリケーションを実行するときに、これは何が起こるかです:だから
2016-04-06 10:17:18.342 EffectTest.iOS[26578:8696061] effect=[EffectTestLib.iOS.MyEffect]
、PlatformEffectが正しく解決されます。ただし、 "Attach Attached"も出力されず、NotImplementedExceptionもスローされません。また、MainPageのプロパティを変更すると、MyEffect.OnPropertyChangedは呼び出されません。バックhttps://developer.xamarin.com/guides/xamarin-forms/effects/creating/への参照
、私が表示されます。
- がにResolutionGroupName属性を追加するOnDetached方法
- を上書きOnAttached方法
- をオーバーライドPlatformEffectクラスのサブクラス
- を作成しますエフェクトクラス。
- エフェクトクラスにExportEffect属性を追加します。
https://developer.xamarin.com/guides/xamarin-forms/effects/creating/#Consuming_the_Effect_in_Cに戻って、ページエフェクトコレクションにエフェクトを追加しているようです。
私はここで間違っていますか?
ソースコード:https://github.com/baskren/PlatformEffect_issue – baskren
サケットへの私の応答を繰り返すが、PlatformEffectsは、Androidでなく、iOS版でページ要素に作業を行うことが表示されます。私はこれを説明するために[githubサンプルプロジェクト](https://github.com/baskren/PlatformEffect_issue)を更新しました。 – baskren