uisegmentedcontrol не обнаруживает прикосновения к определенным сегментам - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть uisegmentedcontrol в горизонтальной прокрутке uiscrollview.Scrollview работает просто отлично, а содержимое изменяется в соответствии с шириной сегментированного элемента управления.Сегментированный элемент управления обнаруживает касания тех сегментов, которые видны при первом отображении.Если я прокручиваю вправо, я не могу выбрать вновь отображаемые сегменты.Cuttof также не является сегментом, это то, что было первоначально отображено, как если бы было представление, обрезающее его.спасибо за помощь, я отменил выбор клипов из прокрутки.

// creates segmented control to indicate test to show on graph

    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:self.labels];
    segmentedControl.frame = CGRectMake(15, 41, 285, 30);
    segmentedControl.autoresizingMask = 
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    segmentedControl.selectedSegmentIndex = 0;
    segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    [segmentedControl addTarget:self action:@selector(testChange:) forControlEvents:UIControlEventValueChanged];

    //checks the length of the text in each segment and asjusts control accordingly
    int x = 0;
    segmentWidth = 0.0;
    for (id segment in [segmentedControl subviews]) 
    {
        for (id label in [segment subviews]) 
        {
            if ([label isKindOfClass:[UILabel class]])
            {

                [label setTextAlignment:UITextAlignmentCenter];
                [label setFont:[UIFont boldSystemFontOfSize:12]];

                CGFloat textWidth = [[segmentedControl titleForSegmentAtIndex:x] sizeWithFont:[UIFont boldSystemFontOfSize:12.0]].width + 20;
                [segmentedControl setWidth:textWidth forSegmentAtIndex:x];
                segmentWidth += textWidth;
            }
        }
        x++;
    }

    self.testSegment = segmentedControl;
    [segmentedControl release];

    //adds segmentedcontroll to scrollview, and adjusts contensize
    [scrollView setContentSize:CGSizeMake(segmentWidth + 45, scrollView.frame.size.height)];
    [scrollView showsHorizontalScrollIndicator];
    [scrollView addSubview:testSegment];

1 Ответ

1 голос
/ 08 ноября 2011

исправлено, проблема в том, что я установил кадр сегментированного элемента управления до вычисления ширины каждого сегмента.

segmentedControl.frame = CGRectMake(15, 41, segmentWidth+20, 30);

до

self.testSegment = segmentedControl;
...