簡體   English   中英

滑塊上的菜單-iPhone在滑動時獲取UISlider指針的x坐標

[英]Menu over slider - iPhone getting the x co-ordinate of UISlider Pointer when sliding

可以在iPhone中為UISlider控件設置最大值和最小值。 因此,滑塊將起作用-確定-很好。

首先,我將給出一個示例,說明我想確切實現的目標。

  • 在iPad中,默認情況下帶有日歷應用程序。
  • 打開底部的日歷-您可以看到日/周/月列表
  • 當您在其上滑動手指時,滑動時會看到一個彈出菜單。
  • 我想在滑塊上實現相同的功能。

我正在努力,但是,如果我能夠獲得x坐標,則可以輕松實現它。 實施此建議的任何其他建議都是最受歡迎的。

首先使用UILabel進行測試(只需在其中寫一些東西),然后向其中添加IBOulets以及UISlider。 接下來,為滑塊添加“值已更改”的IBAction。

然后,您需要計算兩個值來確定標簽的放置位置-左調整和滑塊每個值的像素。 您的@interface可能看起來像這樣:

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

@end

在例如viewDidLoad:中,對於您的視圖控制器,您需要對兩個float進行計算。

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

希望能有所幫助。

我不認為這是通過UISlider實現的,但是您可以輕松使用觸摸的x坐標。

在UISlider的操作中,您可以接受第二個參數。

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

從UIEvent中,您可以獲取包含其x,y坐標的UITouch。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM