gpt4 book ai didi

objective-c - UIButton setImage 未从非触摸操作更新

转载 作者:行者123 更新时间:2023-11-29 04:58:50 25 4
gpt4 key购买 nike

作为 obj-c 的菜鸟,我已经在这个问题上停留了一两天了。如果有人可以提供帮助,我们将不胜感激。

我正在开发一个 ipad 应用程序,其中的按钮可以更改图像(例如“静音开关”按钮)来代表和控制笔记本电脑上的应用程序。

我有一个 IBAction,可以触发一条 MIDI 消息通过网络发送到我的笔记本电脑 - 在这里一切正常。

UIButton 的更新发生在我的笔记本电脑上的应用程序通过 midi 消息返回时,而不是在这个 void 函数中的 touchDown 的 IBAction 中;

    - (void) midiSource:(PGMidiSource*)midi midiReceived:(const MIDIPacketList *)packetList
{
int firstByte = 0;
int secondByte = 0;
int controllerNumber = 0;
int controllerValue = 0;

const MIDIPacket *packet = &packetList->packet[0];
for (int i = 0; i < packetList->numPackets; i++) {
for (int j = 0; j < packet->length; j++) {
if (secondByte) {
controllerValue = packet->data[j];
secondByte = 0;
firstByte = 0;
if (controllerNumber < 8) {
if (!controllerValue) {
[muteButtonIds[controllerNumber] setImage:imageMuted forState:UIControlStateNormal];
[muteButtonIds[controllerNumber] setImage:imageMuted forState:UIControlStateSelected];
}
else {
[muteButtonIds[controllerNumber] setImage:imageUnmuted forState:UIControlStateNormal];
[muteButtonIds[controllerNumber] setImage:imageUnmuted forState:UIControlStateSelected];
}
}
}
if (firstByte) {
secondByte = 1;
controllerNumber = packet->data[j];
}
if (packet->data[j]== 176) {
firstByte = 1;
}
}
packet = MIDIPacketNext(packet);
}
}

当触摸我的 ipad UIButton 时,一切正常,没有问题。我的问题是,当我从我的笔记本电脑应用程序发送相同的 midi 消息时,我的 ipad 上的 gui 不会更新,直到我触摸应该更改的特定按钮。

我尝试查看 setNeedsDisplay,但这只会引发 autoreleasepool 警告。

我确信这是我所缺少的一些简单的东西。

有人可以帮忙吗?

我有 C 背景,MaxMSP 的编程 GUI,而 jbox_redraw 是通过 midi 前进的方向(我知道这不是我应该寻找答案的地方,但这正是我正在寻找的功能)留言

感谢您花时间查看此内容。

问候,利伊

最佳答案

首先,尝试使用 setBackgroundImage forState 而不是 setImage forState。如果您的按钮可能会突出显示,请尝试添加额外的 setImage forState 行,以应对“正常”和“突出显示”等情况,使用按位 OR 运算符(控件状态是位掩码)

UIControlStateNormal | UIControlStateHighlighted

如果您仍然遇到问题,请在为每个状态设置图像后尝试以编程方式选择和取消选择该按钮:

[muteButtonIds[controllerNumber] setSelected:YES];
[muteButtonIds[controllerNumber] setSelected:NO];

关于objective-c - UIButton setImage 未从非触摸操作更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7404138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com