Я работаю над проектом и мне нужно создать экран, похожий на домашний экран iPhone:
- Вид прокрутки с несколькими страницами
- куча иконок
- Когда не в режиме редактирования, проведите по различным страницам (даже я начал прикосновение к значку)
- Когда не в режиме редактирования, нажмите значок, чтобы что-то сделать
- В режиме редактирования перетащите значок, чтобы поменять местами, и даже поменять местами на разных страницах
- В режиме редактирования нажмите значок, чтобы удалить его
Ранее я читал на нескольких форумах, что мне нужно создать подкласс UIScrollview, чтобы иметь сенсорный ввод для UIViews поверх него. Поэтому я разделил его на подклассы, переопределяя методы обработки касаний:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//If not dragging, send event to next responder
if (!self.dragging)
[self.nextResponder touchesBegan:touches withEvent:event];
else
[super touchesBegan:touches withEvent:event];
}
В общем, я переопределяю методы touchesBegan :, touchesMoved: и touchesEnded:
Затем в контроллере представления я добавил следующий код:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
UIView *hitView = (UIView *)touch.view;
if ([hitView isKindOfClass:[UIView class]]) {
[hitView doSomething];
NSLog(@"touchesBegan");
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
// Some codes to move the icons
NSLog(@"touchesMoved");
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesEnded");
}
Когда я запускаю приложение, у меня корректно определяется метод touchesBegan. Однако, когда я попытался перетащить значок, значок немного переместился, а затем страница начала прокручиваться. В консоли он регистрируется только с 2 или 3 сообщениями «touchesMoved». Тем не менее, я узнал из другого проекта, что он должен регистрировать тонны сообщения «touchesMoved», пока я все еще перетаскиваю на экране.
(Я подозреваю, что для delaysContentTouches установлено значение YES, поэтому оно немного задерживается при попытке перетаскивания значков. После этой небольшой задержки отправляется сигнал обратно в просмотр прокрутки для прокрутки страницы. поправь меня если я не прав.)
Так что, если любая помощь в коде для выполнения вышеуказанных задач будет принята с благодарностью. Я застрял в этом месте почти неделю без надежды. Большое спасибо.