Iphone 如何在用户选择其选项后取消UIPIckerView

Iphone 如何在用户选择其选项后取消UIPIckerView,iphone,ios,uitextfield,uipickerview,dismiss,Iphone,Ios,Uitextfield,Uipickerview,Dismiss,我将我的UIPickerView连接到UITextField的inputView。我突然想到了。我知道用户何时选择一行。我知道行的值。这一切都很好 我的问题是什么时候解雇挑选者。我见过有人将带有[Cancel]和[Done]的工具栏与选取器结合,然后单击任意一个按钮将其取消。这可能是最好的方法,因为用户可以放弃自己的选择 我也看到过一个应用程序,用户滚动到他们想要的选择,然后再次按下它来取消选择。我想知道怎么做。我注意到,一旦选择器通知您选择了特定行,如果用户继续单击/按下同一活动行,它将不会再

我将我的
UIPickerView
连接到
UITextField的
inputView。我突然想到了。我知道用户何时选择一行。我知道行的值。这一切都很好

我的问题是什么时候解雇挑选者。我见过有人将带有[Cancel]和[Done]的工具栏与选取器结合,然后单击任意一个按钮将其取消。这可能是最好的方法,因为用户可以放弃自己的选择

我也看到过一个应用程序,用户滚动到他们想要的选择,然后再次按下它来取消选择。我想知道怎么做。我注意到,一旦选择器通知您选择了特定行,如果用户继续单击/按下同一活动行,它将不会再次通知您

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

嘿,UserDano,因为您已将选择器作为ipnputView添加到可以调用的文本字段中

 [outletForTextField resignFirstResponder] 

这将有助于你辞职。现在,您要做的是在第一次选择时选择值,在第二次选择时(对于同一行),您要隐藏选取器。因此,保留布尔值以存储所选值,然后在选择同一行时使用它删除选取器可能就可以了。希望对您有所帮助

如果您想知道如何在单击按钮时取消选取器视图,您可以将我在我的一个项目中使用过的代码片段放在下面:

    NSInteger selectedRow=[yourPickerView selectedRowInComponent:0];// i assume your picker have one component
NSString *item=[yourPickerView objectAtIndex:selectedRow];//get the selected item
yourTextField.text=[NSString stringWithFormat:@"%@",item];//display the selected item in the text field
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
CGAffineTransform transform=CGAffineTransformMakeTranslation(0, 480);
yourPickerView.transform=transform;
[UIView commitAnimations];//dismiss the view controller which contains the picker view

将上面的代码放在按钮iAction方法中。希望能有所帮助。

Rahul,感谢您的回复。我的问题是知道用户在一行中选择同一行两次,就像双击一样。首先,用户将滚动到他们想要的行,然后滚动完成后,他们点击该行。选择器仅在滚动完成时发送didSelectRow消息,而不是在点击/重新选择时发送。我已经在我的iPhone4和iPhone4.3模拟器上验证了这一点。我猜我必须去一个较低的层次,也许处理触摸事件?哈哈,我希望这会是我错过的愚蠢的事情。还有一种方法可以抓住双击。i、 e在用户滚动到的行上方添加重叠的maskview。一旦用户双击选定的行触摸被maskview抓取,我们就可以依次选择行、删除maskview和关闭选择器。感谢您的想法。我会试试看。我还没有使用maskview,但这不应该阻止我学习。与所问的问题无关。