1

UISlideriPhone でコントロールの最大値と最小値を設定しても問題ありません。したがって、スライダーは動作します - OK - 良い。

まず、具体的に実装したいものの例を挙げます。

  • iPad には、デフォルトでカレンダー アプリケーションが付属しています。
  • 下部にあるカレンダーを開く - 日/週/月のリストを表示できます
  • 指をスライドさせると、スライド時にポップアップ メニューが表示されます。
  • スライダーに同じ機能を実装したい。

がんばってますが、x座標が取れれば簡単に実装できます。同じものを実装するための他の提案は大歓迎です。

4

2 に答える 2

3

テスト用の UILabel から始めて (何か書き込んでください)、UISlider と同様に IBOulets を追加します。次に、スライダーの「値が変更されました」の IBAction を追加します。

次に、ラベルを配置する場所を特定するために、2 つの値を計算する必要があります。左からの調整と、スライダーの値ごとのピクセルです。次の@interfaceようになります。

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

@end

たとえば、viewDidLoad: では、View Controller に対して、2 つのフロートの計算を行います。

- (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;
}

それが役立つことを願っています。

于 2010-07-01T09:16:06.437 に答える
0

UISliderで実装されているとは思いませんが、タッチのx座標は簡単に使用できます。

UISliderのアクションでは、2番目の引数を受け入れることができます。

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

UIEventから、x、y座標を含むUITouchを取得できます。

于 2010-07-01T09:20:51.260 に答える