TapGestureRecognizer不被调用

TapGestureRecognizer不被调用

嗨,在主WiewController的viewDidLoad中,我设置了一个

UIGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(processTap)];

然后在for循环中,我创建UIViews并将其添加到滚动 View ,然后将其添加到主 View 。
       UIView *newsContainer = [[UIView alloc] initWithFrame:CGRectMake(160 * countnews, 30, 156, 126)];
       newsContainer.tag = countnews;
       newsContainer.userInteractionEnabled = YES;
       [newsContainer addGestureRecognizer:recognizer];
       [tempScroll addSubview:newsContainer];

然后我有一个功能
- (void)processTap:(UITapGestureRecognizer *)recognizer {
    UIView *view = recognizer.view;
    NSLog(@"HELLO, %d", view.tag);
}

哪个永远不会被召唤,有什么建议?您的帮助将不胜感激。提前致谢。

这是整个.m
#import "iPadMainViewController.h"
#import "GradeintView.h"
#import <QuartzCore/CALayer.h>
#import "Category.h"
#import "News.h"
#import "LazyImageView.h"
#import "TouchView.h"

@interface iPadMainViewController ()

@end

@implementation iPadMainViewController

@synthesize detailsView = _detailsView;

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

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(processTap:)];
    [recognizer setDelegate:self];

    GradeintView *MainTitle = [[GradeintView alloc] initWithFrame:CGRectMake(0, 0, 1024, 50)];
    GradeintView *MainSubTitle = [[GradeintView alloc] initWithFrame:CGRectMake(0, 50, 1024, 30)];

    NSMutableArray *categoriesCollection = [[Category alloc] allCategoriesFromFeedAtUrl:@"http://geonews.ge/xml/category.php"];

    UIScrollView *categories = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 512, 768)];
    _detailsView = [[UIWebView alloc] initWithFrame:CGRectMake(500, 0, 512, 768)];
    [_detailsView addGestureRecognizer:recognizer];
    [categories setScrollEnabled:TRUE];
    [categories setContentSize:CGSizeMake(500, categoriesCollection.count * 156)];

    MainTitle.layer.masksToBounds = NO;
    MainTitle.layer.shadowOffset = CGSizeMake(3, 3);
    MainTitle.layer.shadowRadius = 5;
    MainTitle.layer.shadowOpacity = 0.3;

    [categories setBackgroundColor:[UIColor redColor]];

    int counter = 0;

    for (Category *cat in categoriesCollection)
    {
        UIView *categoryTitle = [[UIView alloc] initWithFrame:CGRectMake(0, 166 * counter
                                                                         , 500, 20)];

        UILabel *categoryLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, 200, 20)];

        [categoryLabel setBackgroundColor:[UIColor clearColor]];
        NSMutableArray *allCurrentNews = [[News alloc] allNewsFromCategory:cat.CategoryId];

        categoryLabel.text = cat.Name;
        categoryLabel.textColor = [UIColor whiteColor];

        [categoryTitle addSubview:categoryLabel];

        UIColor *myblack = [[UIColor alloc] initWithRed:0.14 green:0.14 blue:0.14 alpha:1];
        UIColor *ligheterBlac = [[UIColor alloc] initWithRed:0.227 green:0.22 blue:0.22 alpha:1];
        [categoryTitle setBackgroundColor:myblack];

        UIScrollView *tempScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 166 * counter, 500, 166)];

        UIColor *tempcolor = ligheterBlac;
        tempScroll.layer.borderColor = [UIColor colorWithRed:0.34 green:0.34 blue:0.34 alpha:1].CGColor;
        tempScroll.layer.borderWidth = 0.5f;
        int countnews = 0;

        for (News *news in allCurrentNews)
        {
            UIView *newsContainer = [[UIView alloc] initWithFrame:CGRectMake(160 * countnews, 30, 156, 126)];
            newsContainer.tag = countnews;
            [newsContainer addGestureRecognizer:recognizer];

            //newsContainer.NewsId = news.NewsId;
            LazyImageView *image = [[LazyImageView alloc] initWithURl:[NSURL URLWithString:news.Thumbnail]];
            image.frame = CGRectMake(0, 0 , 156, 96);
            UILabel *newsTitle = [[UILabel alloc] initWithFrame:CGRectMake(0, 96, 156, 30)];
            newsTitle.backgroundColor = myblack;
            newsTitle.numberOfLines = 2;
            newsTitle.font = [UIFont systemFontOfSize:11];
            newsTitle.text = news.Title;
            newsTitle.textColor = [UIColor whiteColor];
            newsTitle.textAlignment = UITextAlignmentCenter;

            newsContainer.layer.borderColor = [UIColor colorWithRed:0.34 green:0.34 blue:0.34 alpha:1].CGColor;
            newsContainer.layer.borderWidth = 0.5f;

            [newsContainer addSubview:image];
            [newsContainer addSubview:newsTitle];

            countnews ++;
            [tempScroll setContentSize:CGSizeMake(allCurrentNews.count * 156, 96)];
            [tempScroll addSubview:newsContainer];
           //[image release];
        }

        [tempScroll setBackgroundColor: tempcolor];

        [categories addSubview:tempScroll];
        [categories addSubview:categoryTitle];
        [tempcolor release];
        [tempScroll release];
        counter ++;
    }

    self.detailsView.layer.masksToBounds = NO;
    self.detailsView.layer.shadowOffset = CGSizeMake(-10, 5);
    self.detailsView.layer.shadowRadius = 5;
    self.detailsView.layer.shadowOpacity = 0.3;


    [self.detailsView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.amazon.com"]]];
    [self.view addSubview:categories];
    [self.view addSubview:self.detailsView];
    [self.view addSubview:MainSubTitle];
    [self.view addSubview:MainTitle];

}

- (void)processTap:(UITapGestureRecognizer *)recognizer {
    UIView *view = recognizer.view;
    NSLog(@"HELLO, %d", view.tag);
}

- (void)viewDidUnload
{
    [super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

- (void)dealloc {
    [super dealloc];
}

- (void)loadDetailedContent:(NSString *)s
{
}

@end

最佳答案

改变

initWithTarget:self.view


initWithTarget:self

编辑:
您还忘记了冒号:
initWithTarget:self action:@selector(processTap:)

编辑2:
您已经创建了_detailsView(已分配了UITapGestureRecognizer),但尚未将其添加到任何 subview 中。它将如何工作?

关于iphone - TapGestureRecognizer不被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9867802/

10-08 20:59