Я не знаю, как лучше решить эту проблему:
У меня есть несколько перетаскиваемых кнопок в приложении, которые можно перемещать поверх некоторых целей. Если кнопка находится над правой целью, скажем, кнопка1 находится над целью1, игрок / пользователь получает очко. Я подумал, что лучший способ справиться с этим - создать класс Target с атрибутом «identifier» и класс Draggable с атрибутом «targetID». Когда объект Draggable освобождается, я проверяю, находится ли он поверх правого целевого объекта, сравнивая их атрибуты.
Звучит просто, но это не так. Сначала я попытался сделать Draggable подклассом UIButton. Как вы, возможно, уже знаете, это не очень хорошая идея, поскольку UIButton возвращает экземпляр другого класса, когда вызывается [UIButton buttonWithType:], например. UIButtonTypeRoundedRect возвращается. Я не могу использовать категорию, так как мне нужно иметь дополнительный атрибут, и, насколько я знаю, категории не могут добавлять атрибуты в класс, только методы. Композиция усложнит все, так как мне придется «прослушивать» действия кнопок от контроллера Draggable. Однако я выберу этот вариант, если не придумаю более разумный вариант.
Возможно, я наблюдаю за чем-то очень очевидным, или я не знаю чего-то абсолютно базового. В таком случае, извините! Мои знания iOS очень просты.