Xamarin:使用具有UICompletion Handler的Notify方法不可用

Swi*_*ect 5 xamarin.ios xamarin

我在Xamarin Studio中有这个静态源分析警告:

API使用问题:使用带有UICompletion Handler completion参数的*Notify方法,bool将告诉您操作是否已完成

在调用时UIView.Animate(double duration, Action animation, Action completion):

UIView.Animate(duration,
   () => Animation(),
   () => Completion());
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法将参数传递给lambda表达式.这些选项都没有编译:

  • (bool) => Completion()
  • (finished) => Completion()
  • (bool finished) => Completion()

如何将此finished参数传递给完成块?

Sus*_*ver 12

在Animate静态方法使用NSAction方法更多的是C#风格的注解和,AnimateNotify使用UICompletionHandler方法,ObjC风格...

这些Animate方法只是辅助包装器AnimateNotify:

所以代替:

UIView.Animate(30, () => { }, () => { });
Run Code Online (Sandbox Code Playgroud)

您可以使用:

UIView.AnimateNotify(30, () => { }, (bool finished) => { });
Run Code Online (Sandbox Code Playgroud)

结果是一样的....

参考:https://github.com/xamarin/xamarin-macios/blob/fc55e4306f79491fd269ca2495c6a859799cb1c6/src/UIKit/UIView.cs#L121