【问题标题】:How to Dismiss a UIPIckerView once the user has selected their choice一旦用户选择了他们的选择,如何关闭 UIPIckerView
【发布时间】:2011-12-04 23:28:44
【问题描述】:

我的UIPickerView 连接到UITextField's inputView。我有它弹出。我知道用户何时选择一行。我知道该行的值。这一切都很棒。

我的问题涉及何时关闭选择器。我见过人们将带有 [Cancel] 和 [Done] 的工具栏与选择器结合使用,然后在单击任一按钮时将其关闭。这可能是最好的方法,因为用户可以退出他们的选择。

我还看到一个应用程序,用户滚动到他们想要的选择,然后再次按下它以关闭选择器。我想知道如何做到这一点。我注意到,一旦选择器通知您选择了特定行,如果用户继续单击/按下 same 活动行,它将不会再次通知您。

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

【问题讨论】:

    标签: iphone ios uitextfield uipickerview dismiss


    【解决方案1】:

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

     [outletForTextField resignFirstResponder] 
    

    这将帮助您退出 pickerView 。现在,您要执行此操作的方式是在第一次选择时要选择值,在第二次选择时(对于同一行),您要隐藏 Picker.So 保持 Bool 值来存储所选值,然后使用它来删除选择同一行时的选择器可能会起作用。希望对你有帮助

    【讨论】:

    • 拉胡尔,感谢您的回复。我的问题是知道用户何时连续两次选择同一行 - 就像双击一样。首先,用户将滚动到他们想要的行,然后一旦完成滚动,他们就会点击它。选择器仅在滚动完成时发送 didSelectRow 消息,而不是在他们点击/重新选择时发送。我已经在我的 iPhone 4 和 iPhone 4.3 模拟器上验证了这一点。我猜我必须去一个较低的级别,也许处理触摸事件?大声笑,我希望这会是我错过的愚蠢的事情。
    • 还有另一种获取双击的方法。即在用户滚动到的行上方添加一个重叠的 maskview。一旦用户双击选定的行触摸被 maskview 抓取,然后我们可以选择行,删除 maskview 并关闭选择器。
    • 感谢您的想法。我会试试的。我还没有使用 maskview,但这不应该阻止我学习。
    【解决方案2】:

    如果您想知道如何在单击按钮时关闭选择器视图,您可以将这个 sn-p 我用在我的一个项目中:

        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
    

    将上面的代码放入您的按钮 IBAction 方法中。希望对您有所帮助。

    【讨论】:

    • 与提出的问题无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多