2011-09-06 85 views
0

我以編程方式向超級視圖添加UIView,並且我想向UIView添加一個目標以便能夠在觸摸上執行任何操作。爲了添加一個目標,我需要將UIView的自定義類設置爲UIControl。通常情況下,在IB中完成,但因爲即時通訊編程,我不能這樣設置它。我試圖設置這樣的UIControl,但它不工作。以編程方式設置UIView的自定義類?

subView.class = UIControl; 

這樣做的正確方法是什麼?

回答

2

UIView的一個實例沒有目標。如果您需要目標/操作機制,請創建UIControl實例。否則,請在您的視圖上使用gesture recognizer

0

你有兩個選擇:

  1. 你必須建立一個直接UIControl這是一個UIView子類,這個類有一個觀點相同的行爲,但你可以使用 選擇addTarget:action:forControlEvents:控制其活動, 或...
  2. 您應該使用UIGestureRecognizer來控制與您的 視圖的交互。
2

你有時候在IB中設置一個UIView的類到MyView中的原因是你想創建一個MyView,但是IB在它的庫中沒有MyView,所以你不能拖一個到你的視圖。所以,你拖入一個UIView,並將其類改爲MyView。

當你在代碼中實例化一個對象而不是從.xib加載它時,根本沒有必要。在代碼中,你知道你想要什麼實例類,所以你只要實例化類:

MyView *subview = [[MyView alloc] initWithFrame:someFrame]; 

如果你想子視圖是一個UIButton,你實例化,而不是:

UIButton *subview = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

不要弄亂了isa-swizzling,至少不是現在。如果你問這個問題(並且問這個問題沒什麼問題),你應該把它作爲一種黑暗的藝術來對待,你可能會在將來的某個時候獲得。

相關問題