在UIScrollView中左右移动

时间:2011-09-26 12:21:10

标签: iphone uiscrollview

我有UIScrollView只能水平滚动。我有一种情况,我在UIScrollView中有数组填充的视图。在UIScrollView中有三个视图共同构成一个单独的组件(有许多这样的组件)。组件包含:

  • 的UILabel
  • 的UIButton
  • UIView(用于基础文本)

我在UIScrollView的末尾放置了两个箭头键(左右)。在触摸左箭头时,我在UIScrollView中向左移动一个位置(显示完整的字符串),在右箭头按钮的情况下向右移动一个位置(显示完整的字符串)。

直到现在我能够执行左箭头动作。但我不知道如何执行右箭头触摸以及如果只显示该字符串的一部分,如何将完整的字符串显示为触摸箭头键。

我知道我有一个UIScrollView并且仍然想添加箭头键来移动它是很奇怪的。但无法帮助它。这是客户的要求。以下是我实施左箭头操作的方法:

-(IBAction) onClickLeftArrow
{
    NSLog(@"BUTTON VALUE : %i",iButtonValue);
    if(iButtonValue <= [m_BCListArray count]) {
        NSArray *arr = [scrollDemo subviews];
        for(int j = 0; j < [arr count]; j++) {
            UIView *view1 = [arr objectAtIndex:j];
            [view1 removeFromSuperview];
        }
        XX = 5.0;
        int tagcount = [m_BCListArray count]-iButtonValue;
        NSLog(@"%@",m_BCListArray);
        for(int i = iButtonValue; i >= 1; i--)
        {
            UILabel *blabel = [[UILabel alloc] initWithFrame:CGRectMake(XX, 6, 120, 26)];
            blabel.text = [m_BCListArray objectAtIndex:[m_BCListArray count]-i];
            blabel.backgroundColor = [UIColor clearColor];
            blabel.textColor = [UIColor whiteColor];
            blabel.font = [UIFont systemFontOfSize:14];
            [scrollDemo addSubview:blabel];

            //underline code
            CGSize expectedLabelSize = [[m_BCListArray objectAtIndex:[m_BCListArray count]-1] sizeWithFont:blabel.font constrainedToSize:blabel.frame.size lineBreakMode:UILineBreakModeWordWrap];
            CGRect newFrame = blabel.frame;
            newFrame.size.height = expectedLabelSize.height;
            blabel.frame = CGRectMake(blabel.frame.origin.x, blabel.frame.origin.y, expectedLabelSize.width+10, expectedLabelSize.height);
            blabel.numberOfLines = 1;
            [blabel sizeToFit];
            int width=blabel.bounds.size.width;
            int height=blabel.bounds.size.height;

            UIButton *btnContent = [UIButton buttonWithType:UIButtonTypeCustom];
            [btnContent addTarget:self action:@selector(SelectButton:)forControlEvents:UIControlEventTouchDown];
            btnContent.tag = tagcount+1;
            btnContent.frame=CGRectMake(XX, 2.0, width+10, height);
            [scrollDemo addSubview:btnContent];
            scrollDemo.contentSize = CGSizeMake(XX+50, 32);
            //scrollDemo.contentSize = CGSizeMake(expectedLabelSize.width,expectedLabelSize.height);

            UIView *viewUnderline=[[UIView alloc] init];
            viewUnderline.frame=CGRectMake(XX, 26, width, 1);
            viewUnderline.backgroundColor=[UIColor whiteColor];
            [scrollDemo addSubview:viewUnderline];
            [viewUnderline release];

            scrollDemo.contentSize = CGSizeMake(XX+width+10, 32);
            XX = XX + width+10;
            iRight  = iRight + 1;
            tagcount ++;
          //  iRight --;
        }
    }   
    iButtonValue = iButtonValue+1;
}

1 个答案:

答案 0 :(得分:1)

在按钮点击操作上设置UIScrollView的contentOffset,您将获得所需的效果。