1

UISliderをUIToolbarに取り込み、そこから値を取得して処理しようとしています。また、他の方法でslider.valueを変更できるようにしたいと思います。それで、私はそれを(UIToolBarではなく)それ自体でUISlider用にセットアップし、すべてが正常に機能しました。次に、それをUIToolBarに入れると、値の送受信が停止しました(値が変更されるたびにNSLを記録し、0が返され続けます)。これが私のコードの関連セクションです-誰かアイデアはありますか?

- (void)setupToolBarAndSlider {
    CGRect frame = CGRectMake(0.0, 0.0, 200.0, 30.0);
    UISlider *slider = [[UISlider alloc] initWithFrame:frame];
    [slider addTarget:self action:@selector(sliderValueChanged) forControlEvents:UIControlEventValueChanged];
    [slider setBackgroundColor:[UIColor clearColor]];
    slider.minimumValue = 0;
    slider.maximumValue = 8;
    slider.continuous = YES;
    slider.value = questionNumberForArray;
    //Change slider for UIToolbar
    UIBarButtonItem *skipQuestionSlider = [[UIBarButtonItem alloc] initWithCustomView:slider];
    // Set the width of aSlider
    [skipQuestionSlider setWidth:400.0];
    //Set up UIToolBar with Slider in it.
    UIToolbar *toolBar;
    CGRect rect2 = CGRectMake(0, toolBar.frame.origin.y , self.view.frame.size.width , 44);
    toolBar = [[UIToolbar alloc]initWithFrame:rect2];
    toolBar.barStyle = UIBarStyleBlackTranslucent;
    [toolBar setItems:[NSArray arrayWithObjects:skipQuestionSlider, nil]];
    [self.view addSubview:toolBar];
}
- (void)sliderValueChanged {
    NSInteger roundedSliderNumber = round(skipQuestionSlider.value);
    NSLog(@"Slider Value = %d", roundedSliderNumber);
} 

サム

4

1 に答える 1

2

UIBarButtonItem(この場合、skipQuestionSlider)にはvalueプロパティがなく、アイテムを格納するだけです。UIBarButtonItemに配置したアイテムを参照する必要があります。

NSInteger roundedSliderNumber = round(slider.value);

于 2012-07-10T14:04:26.443 に答える