gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:28:10 25 4
gpt4 key购买 nike

嗯,每个人都知道在 ObjC 中我们有

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

注意 completion block 有一个 BOOL 参数。现在让我们看看 Monotouch:

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

NSAction 是:

public delegate void NSAction ();

只是没有任何参数的委托(delegate)。此外,在 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 ();
}
});
}

公告delegate (bool x) , 它按照我的需要调用函数。现在,我怎样才能通过 Action<bool>作为 UIView.Animate 的完成?

最佳答案

那是一个 绑定(bind)错误(类型错误),出于兼容性原因,Animate 仍然使用NSAction 完成处理程序。

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

public delegate void UICompletionHandler (bool finished);

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

关于c# - 如何将参数传递给 NSAction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12265232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com