2009-05-26 54 views
3

我在Xcode中創建了一個空白的基於視圖的新應用程序項目。它爲它生成了一個myProjectViewController和一個nib。在該視圖控制器的那個筆尖中,只有一個視圖。我想測試一些事件處理的東西,並創建了一個 - (IBAction)方法,當我觸摸視圖時只記錄一個「hello world」。但由於某種原因,IB並沒有給我一個勾住這個行動的機會。我在那裏做錯了什麼?我也試圖把UIView作爲子視圖。當我把它拖到文件的所有者(whoose類是myProjectViewController,我在頭中有IBAction)時,甚至沒有提到IBAction。但它實際上應該,對吧?如何將IBAction方法連接到普通視圖以進行修改事件?

回答

3

我們有touchesBegan,touchesMoved和touchesEnded方法爲此目的。

0

IBAction是設計用於接收來自控件的動作的方法。它們不是界面生成器指示該方法是動作來源(該類爲響應其他事件而生成的)的指示。

要連接來自UIView子類的自定義事件,請參閱我對有關問題的回答here。您將需要使用委託/協議方法。

4

IBAction只是一個標籤,您添加到方法聲明中,該方法聲明將該方法標識爲連接到控件操作的候選項。

IBAction方法是接收其他控件的動作消息的方法。

UIViews不發送任何操作。 UIControls可以。所以沒有什麼可以從普通的UIView連接到你的對象。您只能將IBActions連接到UIControl子類和UIBarButtonItems。

-1

讓您的視圖成爲UIButton的一類。這將使視圖可以鉤住。

+0

-1。剛剛進行了實驗,並將視圖的類設置爲UIButton將一些「發送事件」添加到連接檢查器,您可以連接到IBActions,如此,但它也完全破壞了您的佈局。 – 2013-07-08 16:07:37

0

我認爲你可以利用touchesBegan或touchesEnded方法,就像@lostInTransit建議的那樣。它是正確的方式,而不是將其視爲按鈕視圖。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

// do something here 

} 
9

有一個簡單的方法來實現這一點。 轉到你的類的接口構建器>>選擇你想添加動作的視圖>>然後將它的自定義類從IDENTITY INSPECTOR從UIView更改爲'UIControl'。現在你可以添加任何IBAction方法到這個視圖。

Change class to UIControl

add IBAction event to this view to perform action method

+1

這是董事會上最簡單的答案,它像一個魅力。應該在頂部!謝謝! – Sean 2015-10-20 17:54:39

相關問題