Xamarin:使用具有UICompletion处理程序的Notify方法不可用

时间:2016-10-25 13:17:17

标签: xamarin xamarin.ios

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

  

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

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

UIView.Animate(duration,
   () => Animation(),
   () => Completion());

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

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

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

2 个答案:

答案 0 :(得分:11)

Animate静态方法使用NSAction方法,更多是C#样式注释,AnimateNotify使用UICompletionHandler方法,ObjC风格......

Animate方法只是帮助包装AnimateNotify

所以而不是:

UIView.Animate(30, () => { }, () => { });

您可以使用:

UIView.AnimateNotify(30, () => { }, (bool finished) => { });

结果是一样的......

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

答案 1 :(得分:3)

看起来您可以使用AnimateNotifyAnimateNotifyAsync方法重载之一,因为它会将UICompletionHandlerbool一起传回:

UIView.AnimateNotify(10, () => { }, finished => { });

OR

await UIView.AnimateNotifyAsync(10, () => { }, finished => { });