我有一个钢琴键盘。每个按钮(钢琴键)在IB中分配了不同的标签。标签用于识别每个按钮,以便我可以播放属于该钢琴键的声音。我将每个钢琴键连接到以下IBAction:
-(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 :(得分:1)
我想,你应该采用另一种方法。创建一个Octave类,从UIView中为您的键创建子类,为该键添加一个八度音程属性和一个音符属性。
或者你可以为每个八度音阶都有一个数组,并检查发送者在哪个数组中有哪些索引来确定音符。
标签很好,用于标识从nib文件加载的视图。对于任何其他适当的面向对象的对象处理更好!
答案 1 :(得分:0)
我整理了一个测试项目并验证了您的代码应该为您提供适当的标记。也许你忽略了代码之外的东西。请尝试以下方法: