UIButton不在UIScrollView中进行交互

时间:2010-11-27 03:38:41

标签: iphone cocoa-touch uiscrollview uiimageview uibutton

我有一个窗口(例如,不是全屏)UIScrollView(在UIView内),它在UIImageViews上滚动UIButtons组(想法)当你点击按钮对显示的图像做某事时)。 UIButton会接受任何触摸事件 - 我该如何解决?

我看过thisthisthisthisthis - 但我要么不理解答案或其含义,或者它并不真正相关。

NSUInteger i;
for (i = 1; i <= kNumImages; i++)
{
    Sentence *testSentence = [[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:i];
    //NSLog(@"testSentence: %@", testSentence);

    //NSString *imageName = [NSString stringWithFormat:@"image%d.jpg", i];
    //Your going to need to optimise this by creating another thumbnail image to use here.

    NSArray *paths       = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *imageName = [[paths objectAtIndex:0] stringByAppendingPathComponent:[testSentence image]];
    //NSLog(@"imageName: %@", imageName);

    UIImage *image = [[UIImage alloc] initWithContentsOfFile:imageName];
    //NSLog(@"image: %@", image);

    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    //NSLog(@"imageView: %@", imageView);

    [imageView setContentMode:UIViewContentModeScaleAspectFit];
    [imageView setBackgroundColor:[UIColor blackColor]];

    // setup each frame to a default height and width, it will be properly placed when we call "updateScrollList"
    CGRect rect = imageView.frame;
    rect.size.height = kScrollObjHeight;
    rect.size.width = kScrollObjWidth;
    imageView.frame = rect;
    imageView.tag = i;  // tag our images for later use when we place them in serial fashion

    imageView.frame = rect;

    UIButton *aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [aButton setTitle:@"Play" forState:UIControlStateNormal];
    aButton.frame = CGRectMake(10, 10, 70, 70);
    [aButton setUserInteractionEnabled:YES];
    [aButton setEnabled:YES];
    [aButton setAlpha:1];

    UIView *buttonWrapperUIView = [[UIView alloc] init];

    [aButton addTarget:self action:@selector(clickPlay:) forControlEvents:UIControlEventTouchUpInside];

    [imageView addSubview:aButton];
    [imageView bringSubviewToFront:aButton];

    [scrollView1 addSubview:imageView];

    NSLog(@"aButton %@", aButton);

    [image release];
    [imageView release];
}

[self layoutScrollImages];  // now place the photos in serial layout within the scrollview

1 个答案:

答案 0 :(得分:4)

尝试

[imageView setUserInteractionEnabled:YES]