0

その中にUIViewのリストを持つUIScrollViewがあります。派手なテーブルビューのようなビット。私が抱えている問題の1つは、スクロールビューの最初の3つの「行」ではボタンが正常に機能することですが、下にスクロールしてもこの後のボタンは反応しません。ビューがロードされたときに画面に表示されるボタンは正常に機能しているように見えますが、スクロールするとさらに下にあるものはすべて応答します...

uiscrollview 内で繰り返される uiview 内のコード

    -(void)addButtons
    {
        UIButton *visiteWebSite = [UIButton buttonWithType:UIButtonTypeCustom];
        [visiteWebSite addTarget:self
                          action:@selector(visitSite:)
         forControlEvents:UIControlEventTouchDown];
        [visiteWebSite setTintColor:[UIColor colorWithRed:247 green:143 blue:30 alpha:1.0]];

        visiteWebSite.frame = CGRectMake(440.0, 10.0, 120.0, 26.0);
        if(![self IsPhone5]) {
            visiteWebSite.frame = CGRectMake(350.0, 10.0, 120.0, 26.0);
        }
        //visiteWebSite.backgroundColor = [UIColor orangeColor]; //[UIColor colorWithRed:247 green:143 blue:30 alpha:1.0];
        [visiteWebSite setBackgroundImage:[UIImage imageNamed:@"orangeBG"] forState:UIControlStateNormal];
        [visiteWebSite setTitle:@"VISITE WEBSITE" forState:UIControlStateNormal];
        visiteWebSite.titleLabel.font = [UIFont fontWithName:@"arial" size:12];

        [self addSubview:visiteWebSite];

        UIButton *getDirections = [UIButton buttonWithType:UIButtonTypeCustom];
        [getDirections addTarget:self
                          action:@selector(getDirections:)
                forControlEvents:UIControlEventTouchDown];

        [getDirections setTitle:@"GET DIRECTIONS" forState:UIControlStateNormal];
        getDirections.titleLabel.font = [UIFont fontWithName:@"arial" size:12];
        getDirections.frame = CGRectMake(440.0, 46.0, 120.0, 26.0);
        if(![self IsPhone5]) {
            getDirections.frame = CGRectMake(350.0, 46.0, 120.0, 26.0);
        }
        [getDirections setBackgroundImage:[UIImage imageNamed:@"orangeBG"] forState:UIControlStateNormal];

        [self addSubview:getDirections];
    }

UIScrollView を含む親ビューからのコード

-(void)performSearch
{
    [self.loadinglabel removeFromSuperview];
    NSString* searchTerm = txtSearch.text;
    searchTerm = [searchTerm stringByReplacingOccurrencesOfString:@" " withString:@""];

    NSData *urldata = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.collectioncosmetics.co.uk/storelocatorapi?store=%@",searchTerm]]];
    NSString *json = [[NSString alloc] initWithData:urldata encoding:NSUTF8StringEncoding];
    SBJsonParser *jsonParser = [[SBJsonParser alloc] init];
    NSArray *jsonObjects = [jsonParser objectWithString:json];
    float y = 0;
    float height = 84;
    if([jsonObjects count] < 1) {
        UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"NO RESULTS" message:@"There are no stores near the postcode you searched" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
        [alertView show];
        [self back:nil];
        return;
    }

    for (int i = 0; i < [jsonObjects count]; i++)
    {
        NSDictionary *dict = [jsonObjects objectAtIndex:i];
        CARStoreResult* result = [[CARStoreResult alloc] initWithFrame:CGRectMake(0, height*i, tv.frame.size.width, height)];
        result.name = [dict objectForKey:@"name"];
        result.street = [dict objectForKey:@"street"];
        result.area = [dict objectForKey:@"area"];
        result.county = [dict objectForKey:@"County"];
        result.postcode = [dict objectForKey:@"PostCode"];
        result.distance = [dict objectForKey:@"distance"];
        result.usersPostCode = searchTerm;
        result.y = y;
        result.num = i;
        y = y + height;
        [result build];
        [tv addSubview:result];
    }
    [tv setFrame:CGRectMake(tv.frame.origin.x, tv.frame.origin.y, tv.frame.size.width, height*[jsonObjects count])];
    [self.scrollView setContentSize:tv.frame.size];

    [Flurry logEvent:@"Store Locator"];
}
4

1 に答える 1

0

修繕! スクロールビュー内のビューにビューを追加する代わりに、スクロールビューに直接追加しました。scrollView.canCancelContentTouches が NO に設定されている scrollview を使用します。

    //[tv addSubview:result];
    [self.scrollView addSubview:result];
}
//[tv setFrame:CGRectMake(tv.frame.origin.x, tv.frame.origin.y, tv.frame.size.width, height*[jsonObjects count])];
[self.scrollView setContentSize:CGSizeMake(320, height*[jsonObjects count])];
//[self.scrollView setContentSize:tv.frame.size];

[Flurry logEvent:@"Store Locator"];
于 2013-06-10T13:34:01.303 に答える