iphone - 发件人标签总是返回 1

标签 iphone objective-c ios cocoa-touch

我有一个钢琴键盘。每个按钮(钢琴键)在 IB 中分配了不同的标签。该标签用于识别每个按钮,因此我可以播放属于该钢琴键的声音。我将每个钢琴键连接到以下 IBAction:

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

[pressedButton tag] 返回的值始终为 1。我尝试了不同的方法来获取它,例如:

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

简单地说:

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

无论我做什么,即使我以编程方式为每个钢琴键分配标签,我总是得到标签 == 1。我可能遗漏了什么?

最佳答案

我认为,您应该采用另一种方法。创建一个 Octave 类,从 UIView 继承你的键,向键添加一个 Octave 属性和一个音符属性。

或者,您可以为每个 Octave 音阶创建一个数组,并检查发送者必须在哪个数组中使用哪个索引来确定音符。

标签很好,可以识别从 nib 文件加载的 View 。对于其他任何适当的面向对象的对象处理更好!

关于iphone - 发件人标签总是返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9142561/

相关文章:

iphone - 检查值是否为整数(Objective-C)

ios - Objective C 属性内存问题

iOS,如何禁用有关已弃用方法的某些警告

iphone - 访问用于临时分发的 iPhone 上的崩溃日志

ios - PJSIP 编译错误 - 在 Xcode 5.1.1 上找不到库

iphone - 我可以在 iPhone/iPad 应用程序中使用 PayPal 吗?

ios - 在自动布局中,无论方向如何,如何让 View 占据屏幕的一半?

ios - 使用 Xcode 构建时 ionic 诊断插件错误

iphone - 如何在 iPad 应用程序中允许文本突出显示?

iphone - ios mobileshop 帮助资源