2012-06-26 5 views
1

Xamarin의 MonoTouch 샘플 세트에서 BubbleCell sample을 사용자 정의하려고합니다. 채팅 거품에 UIImageView를 추가하고 UIImageView가 도청되면 코드가 무언가를 할 수 있습니다. (제 경우에는 모달보기를여십시오 - 지금은 출력물에 무언가를 쓰려고합니다. 창문).MonoTouch.Dialog에 대화 형보기 추가 UITableViewCell

이 샘플에서는 MonoTouch.Dialog를 사용하여 인터페이스를 레이아웃하고보기를 생성하고이를 UITableViewCell.ContentView에 추가하는 사용자 지정 셀 클래스가 있습니다.

저는 UIImageView를 셀에 쉽게 넣을 수있었습니다. 그러나 UIImageView가 도청에 응답하는 방법을 알아낼 수 없습니다.

내가 (Bubble.cs에서) BubbleCell의 생성자에있는 UIImageView의 건설을하고있어, 같은 시간에, 나는에 다음 줄을 추가

var tap = new UITapGestureRecognizer(); 
tap.AddTarget(() => { 
    Console.WriteLine("I'll do something here"); 
}); 
imageView.UserInteractionEnabled = true; 
imageView.AddGestureRecognizer(tap); 

코드는 컴파일 및 실행 그래도 UIImageView를 누르면 아무 일도 일어나지 않습니다. 나는 사용자 지정있는 UIButton에 대한있는 UIImageView을 교환

  • :

    나는이 고정 어느 것도 몇 가지 변화를 시도했습니다.

  • 셀과 UITableView의 superview 계층 구조를 살펴보고 superviews의 UserInteractionEnabled 속성이 모두 true로 설정되었는지 확인했습니다. 그들이하다.
  • 은 내가 UITapGestureRecognizer를 제거하고 (그들은 호출되지 않았다)

내가 MonoTouch.Dialog 내에서 테이블 셀은 사용자와 작동하도록해야 할 특별한 있나요있는 UIImageView를 서브 클래스와 TouchesBegan/TouchesEnded 방법을 차단 시도 상호 작용?

+0

touchesBegan에 응답하지 않으면 작동하지 않습니까? 유사한 시나리오에 대한 [이 질문] (http://stackoverflow.com/questions/855095/how-can-i-detect-the-touch-event-of-an-uiimageview)을 참조하십시오. – Jason

+0

아니요, 불행히도 - 제가 말했듯이 질문에, UIImageView를 서브 클래 싱하고 touchesBegan에 응답하지 않았다. TouchesBegan/TouchesEnded 등 메소드가 호출되지 않았다. 또한 하위 클래스의 CanBecomeFirstResponder 메서드를 재정의하고 true를 반환했지만이 방법도 도움이되지 않았습니다. – John

+0

죄송합니다, 귀하의 질문에 그 비트를 놓쳤습니다. 제스처를 사용하지 않고도 그렇게 할 수 있어야한다고 생각합니다.하지만 작동하지 않는 이유는 확실하지 않습니다. – Jason

답변

1

UIImageView 개체는 어떻게 만듭니 까? 방금 샘플 프로젝트를 만들었고 탭에 완벽하게 반응합니다.

UIImageView btn = new UIImageView (new UIImage ("50-50.png")); 
btn.UserInteractionEnabled = true; 
UITapGestureRecognizer rec = new UITapGestureRecognizer(); 
rec.AddTarget (() => Console.WriteLine ("Test")); 
btn.AddGestureRecognizer (rec); 
Root = new RootElement ("TestViewController") { 
    new Section ("First Section"){ 
     new UIViewElement ("Test", btn, false) 
    }, 
    new Section ("Second Section"){ 
    }, 
};