标签: uipickerview

iOS 7.1 UITapGesture无法使用UIPickerView

我们使用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)

如果需要任何其他信息或者有更优选的方法,请告诉我.

uipickerview uitapgesturerecognizer ios7.1

35
推荐指数
1
解决办法
1万
查看次数

修复了UIPickerView选择栏中的标签

在时钟应用程序,计时器屏幕显示了一个选择器(可能是一个UIPickerUIDatePickerModeCountDownTimer模式),在选择栏一些文本("小时",并在这种情况下,"分钟").

(编辑)请注意,这些标签是固定的:当拣选轮滚动时,它们不会移动.

有没有办法在标准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)

iphone cocoa-touch uipickerview

33
推荐指数
3
解决办法
3万
查看次数

在iOS8中显示带有UIActionSheet的UIPickerView无法正常工作

iOS8中显示UIPickerView与无法正常工作UIActionSheet

该代码适用于iOS7,但它在iOS8不起作用.我确定这是因为在iOS8中不推荐使用UIActionSheet 而Apple建议使用UIAlertController.

但是,如何在iOS8中做到这一点?我应该用UIAlertController

iOS7:
在此输入图像描述

iOS8:
在此输入图像描述

编辑:

我的GitHub项目解决了这个问题.

uipickerview uiactionsheet ios uialertcontroller actionsheetpicker

33
推荐指数
2
解决办法
4万
查看次数

UIDatePicker选择Month和Year

我只需要UIDatePicker选择月份和年份.我检查了班级参考文件.看起来像是UIDatePicker一个UIView.我想象的UIPickerView可能是一个子视图,如果我可以抓住它,我可以隐藏组件.但不是.那是不可能的.我必须创建自己的自定义选择器吗?有任何想法吗?

objective-c uidatepicker uipickerview uikit ios

30
推荐指数
3
解决办法
5万
查看次数

Swift:如何在Swift中使用三个组件设置UIPickerView的默认值?

如何在Swift中设置选择器视图的起始行?我看到有一个Objective C的代码,但我不明白.如果有人能解释我如何将Objective C代码翻译成Swift,这也很棒!

谢谢

uipickerview swift

30
推荐指数
3
解决办法
6万
查看次数

如何检测UIPickerView的变化?

我想检测UIPickerView值的变化.

如果UIPickerView响应addTarget我使用了这样的代码:

-(void) valueChange:(id)sender {
change = YES;

} 

UIPickerView *questionPicker = [[UIPickerView alloc] init]; 
[questionPicker addTarget:self action:@selector(valueChange:) forControlEvents:UIControlEventValueChanged];

我怎么能以正确的方式做同样的事情呢?

objective-c uipickerview ios swift

28
推荐指数
2
解决办法
2万
查看次数

UIPickerView作为UITextField的inputView

我已经阅读了很多关于我如何使用a UIPickerView作为inputView我的UITextField.问题是,UIPickerView当我点击时,我可以打电话给我UITextField.但是,我的应用程序始终加载UIPickerView显示.我已经试图改变myownpickerview.hidden = YES;viewDidLoad,但是当我点击这会导致问题UITextField.它不会显示,如果我多次单击,调试器会显示会出现错误.

谁能指出我正确的方向?我UIPickerView点击之后只想显示UITextField

我还在研究我的第一个iOS应用程序.请耐心等待.谢谢=)

iphone objective-c uipickerview uitextfield ios

28
推荐指数
1
解决办法
3万
查看次数

有没有办法在Swift中将UIPickerView添加到UIAlertController(Alert或ActionSheet)中?

我对swift(以及iOS编程)完全不熟悉,但我开始搞乱它(当一切仍然是beta版本时,这不是一个好主意:D).所以我试着自己弄清楚,但仍然没有.甚至试图添加包含选择器的子视图而没有任何成功.那么任何人都可以帮助我吗?

uipickerview ios swift uialertcontroller

25
推荐指数
4
解决办法
5万
查看次数

UIPickerView不允许通过委托的`attributionTitleForRow ...`更改字体名称和大小

我使用以下函数来更改字体颜色和字体大小,颜色有效,但字体名称和字体大小拒绝工作.

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)

任何帮助?

谢谢.

size fonts cocoa uipickerview nsattributedstring

25
推荐指数
2
解决办法
2万
查看次数

如何在一个View Controller中使用2个UIPickerView?

我在一个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(另一个被调用 …

xcode uipickerview swift

25
推荐指数
3
解决办法
3万
查看次数