UIPickerView获得“Clicked”元素?

时间:2010-09-06 13:47:32

标签: iphone xcode uipickerview

我使用旋转的UIPickerView水平使用它。 到目前为止,此工作正常。

现在我想获取“点击”UIPickerView行的视图/标题。 代表让我有机会在选择器时获得“selectedRow” 选择一行。我在选择时不需要任何活动,我需要点击它。

有趣的是,我已经可以点击元素了。我没有添加按钮或其他任何东西。 “clicked”元素/行会像按钮一样突出显示。但是我应该在哪里附加事件监听器?或者我怎么能得到这些事件?

我还尝试将按钮添加为uipickerview的视图。这项工作到目前为止,但我无法点击任何按钮。

我是否需要一个按钮作为UIPickerView行中的View来获取touchupinside-event或 我可以使用UIPickerView的普通行元素来获取这样的事件吗?

thx任何帮助!

4 个答案:

答案 0 :(得分:8)

这很容易:

- (void)viewDidLoad {
    picker.userInteractionEnabled = YES;
    UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self 
                                                                                        action:@selector(pickerTap)];
    [picker addGestureRecognizer:tapGesture];
    [tapGesture release];
}

- (void)pickerTap {
    NSLog(@"Picker tapped"); 
}

您不需要继承UIPickerView。

答案 1 :(得分:0)

单击元素时,将自动选择该元素。因此,selecetedRow方法将足够好,同时,它会在滑动时为您提供正确的元素(“点击”方法不会发生这种情况。)

要获取UIPickerView事件,您可能需要将控制器设置为符合UIPickerViewDataSource和UIPickerViewDelegate协议,并将选择器的委托和数据源设置为控制器。这样,您可以使用

等方法设置pickerView的内容
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

获取活动:

– selectedRowInComponent:

答案 2 :(得分:0)

你可以自定义pickerView并继承他们的触摸事件方法。

- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event {
    if (!self.dragging) {
    [self.nextResponder touchesEnded: touches withEvent:event]; 
    }       
    //here u can keep track of touch event(click ,double click)
    [super touchesEnded: touches withEvent: event];
}

答案 3 :(得分:0)

检查this post,它可能不是您正在寻找的确切解决方案,但它会有所帮助。

我最初通过在每个选择器项中添加一个带有行索引作为标记的透明按钮来实现单击以进行选择。它在iOS 7上不再起作用,必须找到新的解决方案。

相关问题