#iphone #cocoa-touch #xcode #view #swipe
#iPhone #cocoa-touch #xcode #Вид #проведите
Вопрос:
Я использую XCode для разработки приложения Cocoa touch для платформы iOS, но у меня возникли проблемы с поиском того, как реализовать жест свайпа, который позволил бы пользователю провести пальцем влево или вправо, чтобы перейти к новому ViewController
(файл nib / xib). Я сделал это swapView IBAction
с помощью кнопки и модального перехода, и я читал о Apple TouchGestureRecognizer
, но я не знаю, как реализовать действие салфетки, которое позволило бы изменить представление.
Я не хочу использовать вид прокрутки, так как у меня есть несколько десятков контроллеров просмотра, которые я хочу, чтобы пользователь мог прокручивать.
Вот пример:
Первый контроллер просмотра.xib: SwipeRight- Перейдите ко второму контроллеру просмотра.xib
Второй контроллер просмотра.xib:
проведите левой кнопкой мыши — перейдите к первому контроллеру просмотра.xib
Проведите правой кнопкой мыши — перейдите к третьему контроллеру просмотра.xib
и т.д. и т.п.
Я раньше не использовал UISwipe / сенсорные жесты, но я использовал IBAction
метод для переключения видов с помощью кнопки с модальным переходом (см. Ниже):
-(IBAction)swapViews; {
SecondViewController *second2 =[[SecondViewController alloc initWithNibName:@"SecondViewController" bundle:nil];
second2.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:second2 animated:YES];
[second2 release];
}
Используется ли салфетка для выполнения аналогичного метода, отформатированного по-другому? Если да, то как мне разобраться в этом и отформатировать его.
Спасибо
Редактировать — Ответ в соответствии с комментарием к вопросу
Поместите это в свой viewDidLoad
UISwipeGestureRecognizer *swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeftDetected:)];
swipeRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeRecognizer];
[swipeRecognizer release];
Затем добавьте селектор as, вставив следующий код в ваш main…
- (IBAction)swipeLeftDetected:(UIGestureRecognizer *)sender {
NC2ViewController *second2 =[[NC2ViewController alloc] initWithNibName:@"NC2ViewController" bundle:nil];
second2.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:second2 animated:YES];
[second2 release];
}
Затем просто убедитесь, что вы импортируете otherViewController, на который вы меняете использование
#import "SecondViewController"
в верхней части вашего основного файла. Надеюсь, это поможет.
Завершить редактирование
Комментарии:
1. Привет, AppleFanBoy, Ты смог реализовать пользовательский интерфейс для обмена представлениями? Я пробовал тот же подход, но безуспешно. Предыдущий наконечник не освобождается. Не могли бы вы, пожалуйста, опубликовать код, если он работает. Спасибо.
2. Я добился успеха и смог заставить его работать
3. Поместите это в свой viewDidLoad; {UISwipeGestureRecognizer *swipeRecognizer = [[Выделение UISwipeGestureRecognizer] initWithTarget:self action:@selector (swipeLeftDetected:)]; swipeRecognizer.direction = UISwipeGestureRecognizerDirectionLeft; [self.view addGestureRecognizer:swipeRecognizer]; [выпуск swipeRecognizer]; }
4. Затем добавьте селектор, вставив следующий код в ваш основной … — (IBAction)swipeLeftDetected:(UIGestureRecognizer *)отправитель { NC2ViewController *second2 =[[NC2ViewController alloc] initWithNibName:@пакет «NC2ViewController»: nil]; second2.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [self presentModalViewController:second2 анимированный: ДА]; [выпуск second2]; }
5. Затем просто убедитесь, что вы импортируете otherViewController, на который вы меняете местами, используя #import «SecondViewController» в верхней части вашего основного файла. Надеюсь, это поможет.
Ответ №1:
Похоже, сейчас самое подходящее время для использования UIGestureRecognizer или, более конкретно, UISwipeGestureRecognizer.
Дополнительную информацию о том, как их использовать, читайте в разделе «Распознаватели жестов» Руководства по обработке событий.
Ответ №2:
Предположим, вы хотите провести пальцем влево, чтобы открыть другой вид справа.
В раскадровке перетащите распознаватель жестов салфетки. Под контроллером просмотра появится значок; перетащите этот значок на ViewController, к которому вы хотите перейти. Это добавит переход, выберите пользовательский переход. Затем создайте класс UIStoryboardSegue. Добавьте следующий код:
- (void)perform {
UIViewController* source = (UIViewController *)self.sourceViewController;
UIViewController* destination = (UIViewController *)self.destinationViewController;
CGRect sourceFrame = source.view.frame;
sourceFrame.origin.x = -sourceFrame.size.width;
CGRect destFrame = destination.view.frame;
destFrame.origin.x = destination.view.frame.size.width;
destination.view.frame = destFrame;
destFrame.origin.x = 0;
[source.view.superview addSubview:destination.view];
[UIView animateWithDuration:0.5
animations:^{
source.view.frame = sourceFrame;
destination.view.frame = destFrame;
}
completion:^(BOOL finished) {
UIWindow *window = source.view.window;
[window setRootViewController:destination];
}];
}