2013-04-04 2 views
0

Я пытаюсь воспроизвести этот Animate a view zoom-bouncing in? в Monotouch, но я ударил исключение, и я не знаю, что делать ... эти методы статики находятся в классе полезности , Исключение возникает при отправке сообщения первому селектору.Проблемы с привязкой с использованием селектора и сообщений в Monotouch

MonoTouch.Foundation.MonoTouchException: Objective-C исключение выбрано. Имя: NSInvalidArgumentException Причина: - [В начале bounce1AnimationStopped]: непризнанный селектор направлена ​​например 0x13908570 в точке (обертка удалась к родному) MonoTouch.ObjCRuntime.Messaging: void_objc_msgSend_IntPtr_IntPtr (IntPtr, IntPtr, IntPtr, IntPtr) на AnimationManager.BounceAppear (MonoTouch.UIKit.UIViewController контейнер, MonoTouch.UIKit.UIView вид, двойная продолжительность) [0x0003a]

public static void BounceAppear(UIViewController container, UIView view, double duration = 0.5) 
    { 
     view.Transform = CGAffineTransform.MakeScale(0.001f, 0.001f); 
     UIView.BeginAnimations(null); 
     UIView.SetAnimationDuration(0.3f/1.5f); 
     UIView.SetAnimationDelegate(container); 
     var selector = new MonoTouch.ObjCRuntime.Selector("bounce1AnimationStopped"); 
     Messaging.void_objc_msgSend_IntPtr_IntPtr(container.Handle, selector.Handle, container.Handle, view.Handle); 
     UIView.SetAnimationDidStopSelector(selector); 
     view.Transform = CGAffineTransform.MakeScale(1.1f, 1.1f); 
     UIView.CommitAnimations(); 
    } 

    [Export("bounce1AnimationStopped:forView")] 
    public static void Bounce1AnimationStopped(UIViewController container,UIView view) 
    { 
     Console.WriteLine("Bounce1AnimationStopped"); 
     UIView.BeginAnimations(null); 
     UIView.SetAnimationDuration(0.3f/2.0f); 
     UIView.SetAnimationDelegate(container); 
     var selector = new MonoTouch.ObjCRuntime.Selector("bounce2AnimationStopped"); 
     Messaging.void_objc_msgSend_IntPtr_IntPtr(container.Handle, selector.Handle, container.Handle, view.Handle); 
     view.Transform = CGAffineTransform.MakeScale(0.9f,0.9f); 
     UIView.CommitAnimations(); 
    } 

    [Export("bounce2AnimationStopped:forView")] 
    public static void Bounce2AnimationStopped(UIViewController container, UIView view) 
    { 
     Console.WriteLine("Bounce2AnimationStopped"); 
     UIView.BeginAnimations(null); 
     UIView.SetAnimationDuration(0.3f/2.0f); 
     view.Transform = CGAffineTransform.MakeIdentity(); 
     UIView.CommitAnimations(); 
    } 

ответ

0

Ok я забыл зарегистрировать свой класс и иметь опорный проход к функции обмена сообщений

private static IntPtr class_ptr = Class.GetHandle("animationManager"); 

, а затем

Messaging.void_objc_msgSend_IntPtr_IntPtr(class_ptr, selector.Handle, container.Handle, view.Handle); 
Смежные вопросы