iOS 7 中用于点击截断的 UIPickerView 交互区域

Posted

技术标签:

【中文标题】iOS 7 中用于点击截断的 UIPickerView 交互区域【英文标题】:UIPickerView interactive area for tapping cut off in iOS 7 【发布时间】:2013-10-07 03:57:30 【问题描述】:

当我用多个组件制作一个长选择器时,只有靠近中心的组件才会对点击选择功能做出反应。

例如,如果您想选择所选行下的下一行,您应该只需点按它即可使其动画进入选择区域。此功能在 ios 7 中仍然存在,但 UIPicker 中实际接受点击的区域是一个非常小的窗口,不大于 200 像素。

有没有什么办法可以扩展这个可点击区域以包含整个 UIPickerView,所以只要您点击一行,它就会变成选择?

编辑这里是代码,很标准...

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

    NSLog(@"picked %i %i" , component , row);



- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
    return 4;


- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
    return 15;


- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
    return @"";


- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

    UILabel *pickersLabel;

    pickersLabel =[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, view.frame.size.width , view.frame.size.height )];
    pickersLabel.text = [NSString stringWithFormat:@"thing %i" , row ];


    pickersLabel.backgroundColor = [UIColor clearColor];

    pickersLabel.backgroundColor = [UIColor colorWithRed:1/255.0 green:1/255.0 blue:2/255.0 alpha:0.05];

    pickersLabel.opaque = NO;
    [view addSubview:pickersLabel];
    return pickersLabel;

【问题讨论】:

我认为还有其他问题...请把代码放在这里.. Dipen,我添加了代码。我还创建了一个全新的项目,只是消除了所有的变量。它仍然只允许您点击以选择 UIPickerView 中心的一行。上面的代码来自那个测试项目。任何建议将不胜感激! 【参考方案1】:

我在使用 .xibs 而不是 iOS 7 中的 Storyboard 中的 UIPickerViews 时遇到了很多问题。我不确定 Storyboard 的幕后是否有一些优化,或者这是否是一个直接的错误,但值得一试 - 我现在正在使用来自故事板的选择器视图,我可以点击未选择的行,它们向上滚动并被选中。

【讨论】:

以上是关于iOS 7 中用于点击截断的 UIPickerView 交互区域的主要内容,如果未能解决你的问题,请参考以下文章

VARCHAR 字段被截断为 255 个字符

Zeppelin:使用自定义的sql解释器截断输出

在 laravel 7 中播种时无法截断表格

为啥在 iOS 上 EXIF GPS 坐标会被截断?

在ios中截断后如何在UILabel文本的末尾添加“更多”

iOS drawInRect:属性使用多行执行文本截断