Mangesh
Mangesh

Reputation: 2285

Strange Behaviour of UIScrollview

I need to draw dynamic images on UIScrollView for this i use, MKHorizion menu (A subclass of Scroll view). Now i add Subview images on scrollview. Loop worked perfectly for adding subview on scrollview. Now in My parent class I need to touch scroll view for updated data. If i didn't touch then it is not showing updated data. Below is code

-(void) reloadData
{
    [self deleteAlliTem];
    self.itemCount = [dataSource numberOfImagesForMenu:self];
    self.backgroundColor = [dataSource backgroundColorForImage:self];

    UIFont *buttonFont = [UIFont boldSystemFontOfSize:15];
    int buttonPadding = 0;

    int tag = kButtonBaseTag;    
    int xPos = kLeftOffset;

    for(int i = 0 ; i < self.itemCount; i ++)
    {
      NSLog(@"*************************************************************");
        NSMutableDictionary *dictData=[dataSource horizMenuImage:self dictForItmeAtIndex:i];

        NSString *title=[dictData valueForKey:@"name"] ? [dictData valueForKey:@"name"] :  @"";

        UIImage* imageItem= [UIImage imageWithData:[Base64 decode:[dictData valueForKey:@"img"]]];
        int buttonWidth = 95;

         UIButton *customButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [customButton setTitle:title forState:UIControlStateNormal];
        customButton.titleLabel.font = buttonFont;
        [customButton setBackgroundImage:[UIImage imageNamed:@"addFriendStrip.png"] forState:UIControlStateNormal];
        [customButton setBackgroundImage:[UIImage imageNamed:@"addFriendStrip.png"] forState:UIControlStateSelected];
         customButton.tag = tag++;
        [customButton addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
         customButton.frame = CGRectMake(xPos, 70, buttonWidth + buttonPadding, 25);
        customButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
        customButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

        customButton.titleEdgeInsets =UIEdgeInsetsMake(0, 10,0, 0);

        customButton.titleLabel.font = [UIFont fontWithName:@"Overlock-Bold" size:16];
        [customButton setTitleColor:[UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1] forState:UIControlStateNormal];
        [customButton setTitleColor:[UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1] forState:UIControlStateSelected];

         UIImageView* itemImageView = [[UIImageView alloc] initWithImage:imageItem];
        itemImageView.tag = 200 + customButton.tag;
        [itemImageView setFrame:CGRectMake(xPos, 0, buttonWidth + buttonPadding, 95)];
        [self addSubview:itemImageView];
        [itemImageView release];
        itemImageView = nil;
        [self addSubview:customButton];

        xPos += buttonWidth;
         xPos += buttonPadding;
        if (i != self.itemCount-1){
            xPos += 2.5; //5;  // Richa
        }
    }
    self.contentSize = CGSizeMake(xPos, 95);
     NSLog(@"############################################################################ - %d",[[self subviews] count]);
    [self scrollRectToVisible:CGRectMake(1, 0, self.frame.size.width, self.frame.size.height) animated:YES];
    }

Please Help me to sort out this. Why do i needed to touch scroll view ? Do i need to override other methods ?

Upvotes: 0

Views: 192

Answers (2)

SachinVsSachin
SachinVsSachin

Reputation: 6427

Did you check it is on main thread ? may be you are using GCD Queue thats why it is not updating till touch.

Upvotes: 1

NiravPatel
NiravPatel

Reputation: 3260

just try to bring your scrollview on top.I am not getting your question correctly ,but it may help. Let me know if it is working or not..!!!

Happy Coding.!!!!

Upvotes: 0

Related Questions