Как отменить действия предыдущего прикосновения к UIImageView при повторном прикосновении к нему, а также как сделать предварительный просмотр? - PullRequest
0 голосов
/ 03 июня 2011

Мой вопрос на самом деле прост, но для лучшего понимания я все здесь объяснил.

У меня есть серия UIImageView внутри UIScrollView, а также еще один большой UIImageView.

Мой код такой:

- (void)viewDidLoad {   

    imgScrollView.clipsToBounds = YES;      
    imgScrollView.scrollEnabled = YES;
    imgScrollView.userInteractionEnabled =YES;

    // load all the images 
    NSUInteger i;
    for (i = 1; i <= 9; i++)
    {
        NSString *imageName = [NSString stringWithFormat:@"image%d.jpg", i];

        CGRect imageViewFrame = CGRectMake(0.0f, 0.0f, kHeight, kWidth);

        // TapImage is a subclassed UIImageView that catch touch/tap events 
        TapImage *imageView = [[[TapImage alloc] initWithFrame:imageViewFrame] autorelease];
        imageView.userInteractionEnabled = YES;
        imageView.image = [UIImage imageNamed:imageName];
        imageView.tag = i;  

        [self.imgScrollView addSubview:imageView];
        [imageView release];
    }

    [self layoutImages];
    [super viewDidLoad];
}

TapImage - это UIImageView в подклассах.код подобен этому

 @interface TapImage : UIImageView {
 }
 @end


 @implementation TapImage
 - (id)initWithFrame:(CGRect)aRect {
     if (self = [super initWithFrame:aRect]) {
         self.userInteractionEnabled = YES;
     }
     return self;
 }

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {     
     [self.layer setBorderColor: [[UIColor greenColor] CGColor]];
     [self.layer setBorderWidth: 2.0];

     NSLog(@"Touches began %@",touches);    
 }
  1. Я хочу сделать предварительный просмотр в большом UIImageView, при касании одного изображения в представлении прокрутки (так же, как в режиме кинопленкифункция в ОС Windows).Но проблема в том, что bigPreview UIImageView не доступен из класса TapImage, поскольку он не является частью класса TapImage.Тогда в чем здесь решение ??

  2. При прикосновении к одному изображению в scrollView, оно получает зеленую границу (обозначенную как выбранное).Здесь я хочу отменить выбор ранее затронутого изображения, когда мы прикасаемся к другому изображению в scrollView (значит, за один раз выбирается и просматривается только одно изображение).Но проблема в том, что при прикосновении к нему каждый UIImageView вызывает свой собственный метод touchesBegan :.Тогда как отменить выбор ранее затронутого изображения ??

Пожалуйста, помогите мне с простыми и подробными ответами.:-) Спасибо заранее.: -)

1 Ответ

0 голосов
/ 04 июня 2011

Это прекрасный пример того, когда использовать метод делегата .По сути, метод делегата позволяет действиям в одном viewController (нажатие кнопки, нажатие на просмотр и т. Д.) Запускать методы другого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...