我们使用a UIPickerView来允许用户从选项列表中进行选择.我们将添加UIPickerView为容器UIView的子视图.然后我们将UITapGestureRecognizer添加到容器中UIView.在UITapGestureRecognizer正在使用经不起它的超级视图关闭该选择器.
在iOS 7.0及以前的版本中,这是按预期工作的.但是,在iOS 7.1中,此设置不再起作用,UITapGestureRecognizer即无法识别tap并调用操作中指定的选择器(取消选择器视图和容器视图).代码如下
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.nameList=[[NSMutableArray alloc] initWithObjects:@"A",@"B",@"C", nil];
UIPickerView *myPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
myPickerView.delegate = self;
myPickerView.showsSelectionIndicator = YES;
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapInListPickerView:)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[myPickerView addGestureRecognizer:singleTap];
[self.view addSubview:myPickerView];
}
-(void)tapInListPickerView:(UIGestureRecognizer *)sender
{
NSLog(@"Taped in pikcer view");
}
Run Code Online (Sandbox Code Playgroud)
如果需要任何其他信息或者有更优选的方法,请告诉我.
在时钟应用程序,计时器屏幕显示了一个选择器(可能是一个UIPicker在UIDatePickerModeCountDownTimer模式),在选择栏一些文本("小时",并在这种情况下,"分钟").
(编辑)请注意,这些标签是固定的:当拣选轮滚动时,它们不会移动.
有没有办法在标准UIPickerView组件的选择栏中显示这样的固定标签?
我没有找到任何有助于此的API.建议是添加一个UILabel作为选择器的子视图,但这不起作用.
回答
我按照Ed Marty的建议(下面回答),它的确有效!不完美,但它应该骗人.作为参考,这是我的实现,随意让它变得更好......
- (void)viewDidLoad {
// Add pickerView
self.pickerView = [[UIPickerView alloc] initWithFrame:CGRectZero];
[pickerView release];
CGSize pickerSize = [pickerView sizeThatFits:CGSizeZero];
CGRect screenRect = [[UIScreen mainScreen] applicationFrame];
#define toolbarHeight 40.0
CGFloat pickerTop = screenRect.size.height - toolbarHeight - pickerSize.height;
CGRect pickerRect = CGRectMake(0.0, pickerTop, pickerSize.width, pickerSize.height);
pickerView.frame = pickerRect;
// Add label on top of pickerView
CGFloat top = pickerTop + 2;
CGFloat height = pickerSize.height - …Run Code Online (Sandbox Code Playgroud) 在iOS8中显示UIPickerView与无法正常工作UIActionSheet
该代码适用于iOS7,但它在iOS8中不起作用.我确定这是因为在iOS8中不推荐使用UIActionSheet 而Apple建议使用UIAlertController.
但是,如何在iOS8中做到这一点?我应该用UIAlertController?
iOS7:

iOS8:

编辑:
uipickerview uiactionsheet ios uialertcontroller actionsheetpicker
我只需要UIDatePicker选择月份和年份.我检查了班级参考文件.看起来像是UIDatePicker一个UIView.我想象的UIPickerView可能是一个子视图,如果我可以抓住它,我可以隐藏组件.但不是.那是不可能的.我必须创建自己的自定义选择器吗?有任何想法吗?
如何在Swift中设置选择器视图的起始行?我看到有一个Objective C的代码,但我不明白.如果有人能解释我如何将Objective C代码翻译成Swift,这也很棒!
谢谢
我想检测UIPickerView值的变化.
如果UIPickerView响应addTarget我使用了这样的代码:
-(void) valueChange:(id)sender {
change = YES;
}
UIPickerView *questionPicker = [[UIPickerView alloc] init];
[questionPicker addTarget:self action:@selector(valueChange:) forControlEvents:UIControlEventValueChanged];
我怎么能以正确的方式做同样的事情呢?
我已经阅读了很多关于我如何使用a UIPickerView作为inputView我的UITextField.问题是,UIPickerView当我点击时,我可以打电话给我UITextField.但是,我的应用程序始终加载UIPickerView显示.我已经试图改变myownpickerview.hidden = YES;的viewDidLoad,但是当我点击这会导致问题UITextField.它不会显示,如果我多次单击,调试器会显示会出现错误.
谁能指出我正确的方向?我UIPickerView点击之后只想显示UITextField
我还在研究我的第一个iOS应用程序.请耐心等待.谢谢=)
我对swift(以及iOS编程)完全不熟悉,但我开始搞乱它(当一切仍然是beta版本时,这不是一个好主意:D).所以我试着自己弄清楚,但仍然没有.甚至试图添加包含选择器的子视图而没有任何成功.那么任何人都可以帮助我吗?
我使用以下函数来更改字体颜色和字体大小,颜色有效,但字体名称和字体大小拒绝工作.
func pickerView(pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString?
var myTitle = NSAttributedString(string: titleData, attributes: [NSFontAttributeName:UIFont(name: "Arial-BoldMT", size: 45)!, NSForegroundColorAttributeName:UIColor.whiteColor()])
Run Code Online (Sandbox Code Playgroud)
任何帮助?
谢谢.
我在一个View Controllers中有2个UIPickerController.我可以让一个工作,但当我添加一秒钟,我的应用程序崩溃.这是我用于一个选择器视图的代码:
import UIKit
class RegisterJobPosition: UIViewController, UIPickerViewDelegate {
@IBOutlet weak var positionLabel: UILabel!
var position = ["Lifeguard", "Instructor", "Supervisor"]
override func viewDidLoad() {
super.viewDidLoad()
}
func numberOfComponentsInPickerView(PickerView: UIPickerView!) -> Int
{
return 1
}
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int
{
return position.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String!
{
return position[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
positionLabel.text = position[row]
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我怎样才能让第二个控制器工作?说我的第二个PickerView被调用UIPickerController(另一个被调用 …
uipickerview ×10
ios ×5
swift ×4
objective-c ×3
iphone ×2
cocoa ×1
cocoa-touch ×1
fonts ×1
ios7.1 ×1
size ×1
uidatepicker ×1
uikit ×1
uitextfield ×1
xcode ×1