Меню поверх слайдера - iPhone получает координату x UISlider Pointer при скольжении - PullRequest
1 голос
/ 01 июля 2010

Можно установить максимальное и минимальное значение для элемента управления UISlider в iPhone. Соответственно слайдер будет работать - ОК - Хорошо.

Сначала я приведу пример того, что именно я хочу реализовать.

  • В iPad по умолчанию поставляется приложение Календарь.
  • Открыть календарь внизу - вы можете увидеть список дней / недель / месяцев
  • Когда вы проведете по нему пальцем, при скольжении вы увидите всплывающее меню.
  • Я хочу реализовать ту же функциональность на слайдере.

Я очень стараюсь, но если мне удастся получить координату х, я легко смогу ее реализовать. Любые другие предложения для реализации того же самого приветствуются.

Ответы [ 2 ]

3 голосов
/ 01 июля 2010

Начните с UILabel для тестирования (просто напишите в нем что-нибудь) и добавьте в него IBOulets, а также UISlider.Затем добавьте IBAction для «значение изменено» для ползунка.

Затем вам нужно вычислить два значения, чтобы выяснить, где должна быть размещена ваша метка - настройка слева и количество пикселей на значение для ползунка.Ваш @interface может выглядеть так:

@interface sliderViewController : UIViewController {
    IBOutlet UISlider *slider;
    IBOutlet UILabel *label;
    float pixelsPerValue;
    float leftAdjust;
}
-(IBAction) sliderValueChanged:(id)sender;

@end

Например, в viewDidLoad: для вашего контроллера представления вы выполняете вычисления для двух чисел с плавающей запятой.

- (void)viewDidLoad {
    float width = slider.frame.size.width;
    pixelsPerValue = width / (slider.maximumValue - slider.minimumValue);
    leftAdjust = slider.frame.origin.x;
    [super viewDidLoad];
}

И, наконец, ваш IBActionможет выглядеть так:

-(IBAction) sliderValueChanged:(id)sender
{
    NSLog(@"changed");
    CGRect frame = label.frame;
    frame.origin.x = leftAdjust + (pixelsPerValue * slider.value);
    label.frame = frame;
}

Надеюсь, это поможет.

0 голосов
/ 01 июля 2010

Я не думаю, что это реализовано с помощью UISlider, но вы можете легко использовать x-координату touch .

В действии UISlider вы можете принять второй аргумент.

-(void)action:(UISlider*)sender forEvent:(UIEvent*)event
//                              ^^^^^^^^^^^^^^^^^^^^^^^^

Из UIEvent вы можете получить UITouch, который содержит его координаты x, y.

...