c# – 如何将参数传递给NSAction?

好吧,每个人都知道在ObjC我们有

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

请注意,完成块具有BOOL参数.
现在让我们来看看Monotouch:

public static void Animate (double duration, double delay, UIViewAnimationOptions options, NSAction animation, NSAction completion)

NSAction是:

public delegate void NSAction ();

只是没有任何争论的代表.此外,在Monotouch“内部”我们可以看到:

public static void Animate (double duration, double delay, UIViewAnimationOptions options, 
NSAction animation, NSAction completion)
{
    UIView.AnimateNotify (duration, delay, options, animation, delegate (bool x)
    {
        if (completion != null)
        {
            completion ();
        }
    });
}

注意委托(bool x),它就像我需要的那样调用函数.现在,我该如何传递Action< bool>作为完成UIView.Animate?

这是一个旧的绑定错误(错误的类型),并且出于兼容性原因,Animate仍然使用NSAction完成处理程序.

为了解决这个问题,一种新的方法AnimateNotify被添加到MonoTouch中.此版本接受UICompletionHandler,其定义如下:

public delegate void UICompletionHandler (bool finished);

因此,您的问题的解决方案是使用较新的AnimateNotify API.

相关文章
相关标签/搜索