Я хочу реализовать подвижный класс UIView (просмотр перемещается, когда вы касаетесь его и двигаете пальцем), например:
@interface MovableView : UIView {
some members;
}
-touchesBegan;
-touchesMoved;
@end
Как я могу применить этот код к UILabel, UIButton и т. д. без множественного наследования? В С++ я бы сделал это так (с UIView в качестве виртуальной базы для MovableView):
struct MovableLabel : UILabel, MovableView {};
Категории предлагаются в качестве альтернативы множественному наследованию, но я определенно не хочу расширять UIView с помощью категорий, потому что это будет применяться ко всем представлениям в моем приложении. Я только хочу, чтобы некоторые из моих взглядов были подвижными.
Моя текущая стратегия по предотвращению дублирования кода заключается в том, чтобы поместить код MovableView в заголовочный файл и включать его каждый раз, когда мне нужен какой-то класс для его использования. Кроме того, мне нужно добавить членов MovableView в любой класс, который я пишу. Это чистое уродство кода, но лучше, чем копирование/вставка кода по всему моему проекту.
Есть ли у кого-нибудь другие идеи, как обойти это ограничение Objective C [отсутствие множественного наследования]?
Спасибо,
Алтан