سؤال

Im toying around with SwipeGestureRecognizer. It´s working as I expect, but when I exit the app in the simulator and run it again, the SwipeGestureRecognizer no longer responds. If i run it again after quitting iOS simulator, it works.

This is what I have tried:

#import <UIKit/UIKit.h>

@interface swipeTestUI : UIViewController
@property (strong, nonatomic) IBOutlet UIImageView *imageView;

- (IBAction)mangeSwipeControl:(UIGestureRecognizer*)sender;




@end

Implementation file:

#import "swipeTestUI.h"

@interface swipeTestUI ()

@end

@implementation swipeTestUI

@synthesize imageView;
int listOfImages = 0;

- (IBAction)mangeSwipeControl:(UIGestureRecognizer *)sender {
    NSLog(@"swipe ok");
    NSArray *images=[[NSArray alloc]initWithObjects:
                        @"1.png",
                        @"2.png",
                        @"3.png",
                        @"4.png",
                        @"5.png",
                        @"5.png",nil];
    UISwipeGestureRecognizerDirection direction = [(UISwipeGestureRecognizer *) sender direction];
    switch (direction) {
        case UISwipeGestureRecognizerDirectionLeft:
            listOfImages++;
            break;
        case UISwipeGestureRecognizerDirectionRight:
            listOfImages--;
            break;
        default:
            break;
    }
    listOfImages = (listOfImages < 0) ? ([images count] -1):listOfImages % [images count];
    imageView.image = [UIImage imageNamed:[images objectAtIndex:listOfImages]];



}





- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.



}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{

    return (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
هل كانت مفيدة؟

المحلول

I think this is an iOS simulator issue. I have modified the code a bit, I think its more effective

the header file is the same, the implementation file is as followed.

    -(IBAction)manageSwipeControl:(UISwipeGestureRecognizer *)gesture {

    NSArray *images=[[NSArray alloc]initWithObjects:
                     @"1.png",
                     @"2.png",
                     @"3.png",
                     @"4.png",
                     @"5.png",
                     @"6.png",nil];

    if (gesture.direction == UISwipeGestureRecognizerDirectionLeft)
    {
     listOfImages++;
    }
    else if (gesture.direction == UISwipeGestureRecognizerDirectionRight)
    {
      listOfImages--;
    }
    listOfImages = (listOfImages < 0) ? ([images count] -1):listOfImages % [images count];
    imageView.image = [UIImage imageNamed:[images objectAtIndex:listOfImages]];
    //[self.imageView removeGestureRecognizer:sender];


}

Works like a charm. Funny thing. When I quit the application in the iOS simulator, and reopen it. It still works. If I quit and remove it from iOS simulator memory - it does not. If I launch the iOS simulator directly from the OS, no problem what so ever. I can both quit and remove it from memory, and it still works.

Still, a fun way to spend on a rainy weekend. Hope this info is useful to other new developers like myself.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top