UIPicker检测当前所选行的点击/触摸 [英] UIPicker detect tap / touch on currently selected row

查看:173
本文介绍了UIPicker检测当前所选行的点击/触摸的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好的,我有一个 UIPickerView ,当用户点击当前选定的行时,我想做点什么。我现在正在使用它,如果他们点击未选中的行,它会旋转到所选的中心视图。

Okay guys, I have a UIPickerView and I want to do something when the user TAPS the currently selected row. I have it working right now where if they tap a row which is NOT selected, it rotates to the selected center view.

然而,当他们点击这个已选择的行时,未调用方法 didSelectRow 。我需要在点击行时执行的操作,而不是在选中时执行的操作。有什么想法?

However, when they tap this already selected row, the method didSelectRow is not called. I need something that executes when they tap the row, not when it becomes selected. Any ideas?

推荐答案

首先,将类符合 UIGestureRecognizerDelegate 协议

然后,在视图设置中:

UITapGestureRecognizer *tapToSelect = [[UITapGestureRecognizer alloc]initWithTarget:self
                                                                                 action:@selector(tappedToSelectRow:)];
tapToSelect.delegate = self;
[self.pickerView addGestureRecognizer:tapToSelect];

以及其他地方:

#pragma mark - Actions

- (IBAction)tappedToSelectRow:(UITapGestureRecognizer *)tapRecognizer
{
    if (tapRecognizer.state == UIGestureRecognizerStateEnded) {
        CGFloat rowHeight = [self.pickerView rowSizeForComponent:0].height;
        CGRect selectedRowFrame = CGRectInset(self.pickerView.bounds, 0.0, (CGRectGetHeight(self.pickerView.frame) - rowHeight) / 2.0 );
        BOOL userTappedOnSelectedRow = (CGRectContainsPoint(selectedRowFrame, [tapRecognizer locationInView:self.pickerView]));
        if (userTappedOnSelectedRow) {
            NSInteger selectedRow = [self.pickerView selectedRowInComponent:0];
            [self pickerView:self.pickerView didSelectRow:selectedRow inComponent:0];
        }
    }
}

#pragma mark - UIGestureRecognizerDelegate

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return true;
}

这篇关于UIPicker检测当前所选行的点击/触摸的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆