2011-01-20 2 views
0

UIScrollView에 지정된 UIView에 나타나는 버튼 목록이 있습니다. 최종적으로 UIScrollView에 추가되는 UIView에 추가하기 전에 TouchUpInside 이벤트 핸들러를 각각 할당합니다.UIButton 용 EventHandlers가 MonoTouch의 화면 요소에 할당되지 못했습니다.

내가 가진 문제는 목록에서 아래로 스크롤하면 볼 수있는 영역 아래의 모든 UIButton이 이벤트 처리기를 시작하지 않는다는 것입니다.

이벤트 처리기를 제거하고 UIScrollView의 Scroll 이벤트에서 재 할당하려고 시도했지만 여전히 아무 것도 시도하지 않았습니다. 내가 뭘 놓치고 있니?

+0

몇 가지 예제 코드가 유용 할 것입니다. –

+0

버튼 모양이 바뀌 었습니까? 아마 그들은 이벤트를 얻지 못하고있다. 상호 작용 요소는 이벤트 처리를 복잡하게 만들 수 있으므로 항상 스크롤 막대에서 제외시키는 것이 가장 좋습니다. –

답변

1

이 테스트 컨트롤러에서 사례를 재현했습니다. 뷰 영역에 속하는 UIButton이 TouchUpInside 이벤트를 성공적으로 트리거합니다. 어쩌면 당신은 자신의 코드와 비교하고 그 차이를 볼 수 있습니다. (포함 진술은 생략되었습니다)

public class ScrollController : UIViewController 
    { 
     UIScrollView scroll; 
     List<UIButton> buttons; 

     public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 

      scroll = new UIScrollView(); 
      scroll.Frame = View.Bounds; 
      View.AddSubview(scroll); 

      scroll.ContentSize = new SizeF(0, 1000); 

      buttons = new List<UIButton>(); 
      for(int i = 0; i < 10; i++) 
      { 
       var button = CreateButton(i * 75, i.ToString()); 
       buttons.Add(button); 
       scroll.AddSubview(button); 
      } 
     } 

     UIButton CreateButton(float y, string title) 
     { 
      var button = UIButton.FromType(UIButtonType.RoundedRect); 
      button.SetTitle(title, UIControlState.Normal); 
      button.Frame = new System.Drawing.RectangleF(0, y, 200, 50); 
      button.TouchUpInside += HandleButtonTouchUpInside; 
      return button; 
     } 

     void HandleButtonTouchUpInside (object sender, EventArgs e) 
     { 
      var button = sender as UIButton; 
      Console.WriteLine("{0} touched", button.Title(UIControlState.Normal)); 
     } 
    }