UIPicker detect tap on currently selected row

后端 未结 8 1403
礼貌的吻别
礼貌的吻别 2020-12-01 10:11

I have a UIPickerView and The method didSelectRow is not called when tapping on a selected row. I need to handle

8条回答
  •  温柔的废话
    2020-12-01 11:05

    1. Add a tapGestureRecognizer to the pickerView as already suggested

    2. Provide views for the picker rows, not the title, via

      -(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

    3. In the gesture's callback method do this

    -(void)pickerTapped:(UIGestureRecognizer *)gestureRecognizer {

    UIPickerView * pv = (id)gestureRecognizer.view;
    UIView * selView = [pv viewForRow:[pv selectedRowInComponent:0]
                         forComponent:0];
    CGPoint touchPoint = [gestureRecognizer locationInView:selView];
    BOOL tapOnSelection = CGRectContainsPoint(selView.bounds, touchPoint);
    
    if (tapOnSelection) ...
    

    }

    I think is more elegant then doing pixel math

提交回复
热议问题