2016-06-03 3 views
0

UIView 안에 UIButton을 생성 중입니다. UIView으로 전환을 적용하면 에있는 myButton_TouchUpInside 터치 이벤트가 중지됩니다. 누구든지 조언 할 수 있습니까? (내가 여기 자 마린을 사용하고 ) 지연된 애니메이션이 시작된 후 UIButton의 터치 이벤트가 중지됩니다.

이 시점에서

UIView myView = new UIView() 
{ 
    BackgroundColor = UIColor.Black, 
    RestorationIdentifier = identifier, 
    UserInteractionEnabled = true, 
    ClipsToBounds = true 
}; 

UIButton myButton = new UIButton() 
{ 
    BackgroundColor = UIColor.Red, 
    UserInteractionEnabled = true 
}; 
myButton.TouchUpInside += myButton_TouchUpInside; 
myButton.SizeToFit(); 
myButton.Frame = new CGRect(0, 10, myButton.Bounds.Width, myButton.Bounds.Height); 

myView.AddSubview(myButton); 
View.AddSubview(myView); 

클릭 이벤트 화재 ( 편집 참조). 나는 그들이 전환이 발생한 후에는 작동이 중지 전환을 추가하면, 나는 그들이 전환에 남아있다 가정 :

var myNewFrame = new CGRect(0, 50, myButton.Frame.Width, myButton.Frame.Height); 
UIView.Transition(myView, 0.5, UIViewAnimationOptions.CurveEaseIn,() => { myView.Frame = myNewFrame; }, null); 

나는 UIButtonFrame 여기에 열쇠라고 읽었습니다. FrameUIView에 추가 한 다음 UIView.Transition에있는 Action (위 코드에 표시되지 않음)을 추가 한 후 다시 확인한 결과 크기와 위치는 완전히 동일합니다.

편집 그것은 문제를 일으키는 전환하지

그 (후 X 초는 페이드 아웃 후 UIView 슬라이드를) 다음과 애니메이션. 전환 코드를 직접 따라 가면 다음 코드가 표시됩니다.

UIView.Animate(0.25, 10, UIViewAnimationOptions.CurveEaseInOut,() => { myView.Alpha = 0; },() => { myView.RemoveFromSuperview(); }); 

이 코드를 제거하면 작동합니다.

답변

0

OK, I가되도록 비동기 방법에 싸서 오히려 붙박이 지연 특성을 이용하여보다 :

UIView.Transition(myView, 0.5, UIViewAnimationOptions.CurveEaseIn,() => { myView.Frame = myNewFrame; },()=> {FadeOut(duration)}); 

private async FadeOut(int duration){ 
    await Task.Delay(duration * 1000); 
    UIView.Animate(0.25, 0, UIViewAnimationOptions.CurveEaseInOut,() => { myView.Alpha = 0; },() => { myView.RemoveFromSuperview(); }); 
} 
관련 문제