2012-02-04 108 views
1

我有一個鋼琴鍵盤。每個按鈕(鋼琴鍵)在IB中分配有不同的標籤。該標籤用於識別每個按鈕,以便我可以播放屬於該鋼琴鍵的聲音。我每個琴鍵連接到以下IBAction爲:發件人標籤始終返回1

-(IBAction)playNoteFromKeyTouch:(id) sender{ 
    UIButton *pressedButton = sender; 
    int tag = [pressedButton tag]; 
} 

由[pressedButton標籤]返回的值始終爲1。我已經嘗試了不同的方式來得到這個,例如:

-(IBAction)playNoteFromKeyTouch:(id) sender{ 
    NSInteger tag = ((UIView*)sender).tag; 
} 

,簡單地:

-(IBAction)playNoteFromKeyTouch:(id) sender{ 
    int tag = [sender tag]; 
} 

不管我做什麼,甚至當我指定的標籤編程到每個琴鍵,我總是獲取標記== 1,我能怎麼會丟失?

+0

Add:NSLog(@「Sender is%@」,sender);在playNoteFromKeyTouch裏面:確保你獲得不同的密鑰。 – Rayfleck 2012-02-04 17:00:29

+0

是的,我有不同的鑰匙 – 2012-02-04 17:04:54

+0

Wierd。你可以粘貼你的IB面板的屏幕截圖來顯示你設置標籤的位置嗎? – Rayfleck 2012-02-04 17:16:03

回答

1

我認爲,你應該採取另一種方法。創建一個Octave類,從UIView中創建你的關鍵字的子類,併爲關鍵字添加一個八度屬性和一個音符屬性。

或者,您可以爲每個八度音程設置一個數組,並檢查發件人在哪個數組中指定索引以確定音符。

標籤很好,可以識別從nib文件加載的視圖。對於其他任何適當的面向對象的對象處理更好!

+0

感謝您的回答。我忘了我正在使用其他東西的標籤。 O_O – 2012-02-04 17:33:36

0

我把一個測試項目放在一起,並驗證你的代碼應該給你適當的標籤。也許你忽略了代碼之外的東西。請嘗試以下操作:

  • 確認您更改正確的.xib(iPhone,而不是iPad等)
  • 驗證標籤中的.xib
  • 重新啓動的Xcode設置正確,驗證標籤仍然設置