How to popup a UIPickerView from the bottom of a UIScrollView in response to UITextField selection

IOS UIPickerView选择器的使用 UIPickerView的基本概念** 它是一个列选择器,可以设置列数和每一列的行数,然后通过调用它的代理方法设置每一个部分的尺寸参数和内容参数。并且可以设置它被选择后的触发效果。 源码分析 成员变量: //此处有两个可选择的协议,实现协议后可以调用相应的代理方法 @protocol UIPickerViewDataSource, UIPickerViewDelegate; //继承自uiview... 阅读详情

转载:http://www.wetware.co.nz/blog/2009/02/how-to-popup-a-uipickerview-from-the-bottom-of-a-uiscrollview-in-response-to-uitextfield-selection/

 

It says to do this with

presentModalViewController : (UIViewController  * )modalViewController animated : ( BOOL )animated

For the life of me, that wouldn’t work.  I could get it to popup sometimes, but with a horrible messed up UIPicker.  I added the UIPickerView to another UIView, which was put into a UIViewController, and handed that to the above method.

This worked brilliantly, BUT after animating from the bottom the background would go completely white.  Not good.

Welcome UIActionSheet

It is not available via the Interface Builder, which is where I endeavor to do all my UI (against the recommendations of everyone in the office.)

Basically, you create a UIActionSheet, add your UIPickerView to it, set the callback delegate (to get which button is clicked) and your away!

Code…

-  ( NSString  * )pickerView : (UIPickerView  * )pickerView titleForRow : (NSInteger )row forComponent : (NSInteger )component {
return  ( NSString * ) [currentData objectAtIndex :row +1 ];
}
-  (NSInteger )numberOfComponentsInPickerView : (UIPickerView  * )pickerView {
return  1;
}

 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return [currentData count] - 1;
}

Put that into your controller (and smoke it.)

-  ( void ) showPicker : ( id )sender  {
UIActionSheet  *menu  =  [ [UIActionSheet alloc ] initWithTitle : [currentData objectAtIndex : 0 ]
delegate :self
cancelButtonTitle : @ "Done"
destructiveButtonTitle : @ "Cancel"
otherButtonTitles : nil ];

 

// Add the picker
UIPickerView *pickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0,185,0,0)];

pickerView.delegate = self;
pickerView.showsSelectionIndicator = YES;    // note this is default to NO

[menu addSubview:pickerView];
[menu showInView:self.view];
[menu setBounds:CGRectMake(0,0,320, 700)];

[pickerView release];
[menu release];
}

It’s not pretty, but it works.  Again put that into your controller.

Respond to UIActionSheet buttons..

-  ( void )actionSheet : (UIActionSheet  * )actionSheet clickedButtonAtIndex : (NSInteger )buttonIndex {
if (buttonIndex ==1 ) {
if (currentField  == location ) {
if ( !completedOnce ) {
[website becomeFirstResponder ];
}
} else {
completedOnce  =  YES;
}
}
}

Again, in your controller.  (I left in my actual code, to give an idea..)

What mine basically does is as follows

  • Setup a couple of arrays with data (content for UIPickerView) (for reference different UITextFields)
  • When a UITextField gets textFieldShouldBeginEditing I return NO and instead callshowPicker.
  • Before showPicker is called, I set an instance variable to the array the UITextField relates to.  This sets it up for the UIPickerView to use.
  • showPicker shows the ActionSheet, with the data it needs.
  • showPicker returns, calling the clickedButtonAtIndex
  • Then I decide what to do with it

There are some minor details I have left out, but you should be able to fill in the gaps.

[Edit]
If you are wondering why I return the currentData objectAtIndex:row+1 it is because my arrays have the first Item the title of the UIPickerView.

regionData  =  [ [ NSArray arrayWithObjects :
@ "Select Your Region",
@ "Waikato",
@ "Hawkes Bay",
@ "Marlborough",
@ "Taranaki",
@ "Gisborne",
@ "Bay of Plenty",
@ "Nelson",
@ "Otago",
@ "Southland",
@ "Northland",
@ "Manawatu-Wanganui",
@ "West Coast",
@ "Canterbury",
@ "Wellington",
@ "Auckland",
@ "Tasman",  nil ] retain ];

Don’t forget to add

@interface myViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource, UIActionSheetDelegate> {

to your .h file.

[EDIT]
To get the selectedIndex from the UIPicker, you need to add the following to your controller. This is in response to a comment below.  I haven’t been deving the iPhone recently so I only guessed the below solution is correct (cherry picked it out of my code).  If not please point it out and I’ll go back and work it out again.

-  ( void )pickerView : (UIPickerView  * )pickerView didSelectRow : (NSInteger )row inComponent : (NSInteger )component {
selectedScrollIndex  = row;
}

daily-stock-analysis(Python) 「daily_stock_analysis(Python)」是后台管理系统(Python)。项目简介:LLM 驱动的多市场股票智能分析系统:多源行情、实时新闻、决策看板与自动推送,支持零成本定时运行。 LLM-powered multi-market stock analysis system with multi-source market data, real-time news, decision dashboard, automated notifications, and cost-free scheduled runs.源码完整,下载解压即可查看使用,适合学习参考、课程设计与二次开发。 立即下载

相关推荐

工具调用智能体可靠性基准数据集验证门重试

面向工具调用型AI智能体可靠性研究的合成基准数据集,研究预执行验证门与有限重试机制如何改变智能体任务完成率、无效动作率与调用成本。包含120张合成工单、1440个模拟回合(4种策略×3种工具故障率)与本地大语言模型试点实验(qwen2.5:3b)。实验结果显示:10%工具故障率下基线策略完成率仅30.0%,验证门加重试组合达97.5%;大模型试点中无防护时8张工单完成5张,加防护后8张全部完成。附结果明细、策略汇总、实验元数据与README共8个文件。适用于智能体工程、工具调用可靠性评估、防护机制设计与大模型应用研究。数据许可:CC0公共领域。

UIKit框架-基础视图-UIPickView-选择框

UIPickView 选择框 属性 创建 UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 100, 320, 216)]; showsSelectionIndicator————该属性控制是否显示UIPickerView中的选中标记(以高亮背景作为选中标记)

杨英俊的博客 497

Python 批量处理大量压缩包|递归嵌套解压 zip rar 7z tar,文件名乱码修复,扫描残留压缩包工具

在收集大量计算机源码时,经常遇到海量多层嵌套压缩包:zip、rar、7z、tar、tar‑gz 混杂,老压缩包中文文件名 GBK 编码解压出现乱码,解压完成后不确定目录内是否还有遗留未解压的压缩包。 本工具集由 3 份 Python 脚本组成,专门针对大批量源码文件夹做自动化预处理,不用手动一个个解压,自动递归遍历所有子目录,处理嵌套压缩包,修复中文文件名乱码,扫描校验残留压缩包,输出完整处理日志。 前置条件 - Python3.8 及以上环境 - 如果要处理 rar/7z 格式:电脑安装 **7‑Zip**,记录 7z.exe 的完整路径,填到 `jieyarar.py` 配置区。 1. 修改每个脚本顶部配置区:`SCAN_ROOT / TARGET_FOLDER` 修改为你存放文件的根目录绝对路径(Windows 路径字符串前面加 r,例如 `r"F:\files\download"`) 2. 第一步:运行 `main.py`,优先处理全部 zip 压缩包,执行完成查看生成的 `unzip_log.txt` 日志; 3. 第二步:运行 `jieyarar.py`,处理 rar、7z、tar 等其它格式压缩包,查看 `unpack_all_archive_log.txt`; 4. 第三步:运行 `checkfiel.py`,全盘扫描校验,输出 `scan_archive_and_badname.txt`; - 查看报告:确认是否还有残留压缩包、是否存在乱码文件名; 5. 根据日志,手动单独处理加密、损坏的压缩包。

AI聚合api网关系统源码+部署教程

AI聚合api网关系统源码+部署教程

国央企在推动内部技术转化时,如何实现技术需求的精准挖掘与匹配?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

iOS-UIPickerView 详解总结

写在文前 由于最近开发中经常碰到类似日期选择器相关业务使用场景,虽然这个系统控件相对来说非常简单,有点儿类似UITableView的感觉,初始化之后设置数据源,代理,完成相应的数据源方法就可以正常展示了,而且其数据源 代理方法相对来说也很少,肯花心思去思考 记忆,很快就能掌握这个控件。 一、UIPicke...

weixin_33779515的博客 548

科技中介服务机构在对接企业与高校科研成果时,如何快速挖掘企业的隐性技术需求?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

iOS基础之OC简单控件知识了解(三)

一.UIPikerView的属性 1.     numberOfComponents:返回UIPickerView当前的列数 NSInteger num = _pickerView.numberOfComponents; NSLog( @"%d", num); 2. -(NSInteger)numberOfRowsInComponent:(NSInteger)component;

lucky_xiaofeng的博客 846

产业园区如何高效跟踪技术需求,以便精准对接企业创新资源?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

车载导航GPS欺骗

因此,如果我们能够模拟卫星信号,将模拟的信号通过信号发射装置发送给GPS传感器,那么就有可能实现欺骗GPS传感器获取虚假的位置信息,这种技术即SDR(软件无线电,Software Defined Radio)[2]。究其原因,在不使用时钟模块的条件下,HackRF发送信号的频率可能不十分精准,因此GPS传感器接收到信号之后可能无法正常解析GPS信号,因此时钟信号可能是HackRF进行GPS欺骗的关键。2)HackRF是否使用了时钟模块,时钟模块决定了信号发送频率的精准程度,对实验的成败也是至关重要的。

2503_90751789的博客 1324

UIPickerView 选取器(滚轮)—IOS开发

声明 欢迎转载,但是请尊重作者劳动成果,转载请保留此框内声明,谢谢。 文章出处:http://blog.youkuaiyun.com/iukey 选取器被用来取代PC上面的下拉菜单,它是一个大大的滚轮,它占用固定的大小 320×216. 一、创建 大小虽然固定,但是位置可以任意(不过横向被充满,咱也只能改变纵向位置)。与UItableView 类似,UIpickerView ...

mmdev 282

电池保护板为什么采用NTC热敏电阻而不是PTC热敏电阻?

R25=10K,即环境温度25°时,阻值是10K),温度变化1°C,阻值相应地明显变化,温度响应很灵敏,也就能精准地反向换算出阻值对应的温度。另外,还有功率型NTC热敏电阻,其主要用在开关电源设计中,串联在市电输入上,抑制浪涌电流。电池保护板上的NTC热敏电阻(NTC一端接地,另一端接电池充电控制IC管脚),在电池温度上升时,NTC热敏电阻温度也会随之上升,从而NTC电阻值会下降,因此电池充电控制IC用ADC检测的电压值就降低,当检测到的电压值达到下限阈值时,电池充电控制IC就会停止对电池的充电或放电。

电子绿洲的博客 5626

自定义popup组件遇到的坑

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34417183的博客 3945

【头歌educoder】离散数学实训参考-第二章-关系-part1-关系基础

python实现离散数学-关系基础-二元关系

wander_alice的博客 8464

ncode控件使用总结

数据格式txt转s3t #HEADER #TITLES Absolute_Time,COG_Ax,COG_Ay,COG_Az,LF_SPINDLE_AZ #UNITS ,g,g,g,g, #DATATYPES Double,Float,Float,Float,Float #DATA 2. 导入s3t数据 3. 输入数据控件 直接拖入数据源或者添加控件数据 4.

技术联盟 2006

0317-iOS之UIPickerView类

Class UIPickerView A view that uses a spinning-wheel or slot-machine metaphor to show one or more sets of values. Declaration class UIPickerView : UIView Overview A picker view displays one...

qq_30185503的博客 226

3D LUT Color Conversion之总体架构设计之三

摘要:本文提出了一种基于三维坐标一维化寻址的四面体网格编码方法。通过定义全局网格坐标P(R,G,B)=R+9G+81B和局部增量(ξ,η,ζ)∈{0,1},推导出偏移量Δ(ξ,η,ζ)=ξ+9η+81ζ的平移不变性质。该方法将6种坐标排序情况(Case)对应的固定偏移量三元组预先存储,其中V0和V3的偏移量恒定为0和91。硬件实现时只需根据Case选择对应常量组,无需实时计算坐标,显著提高了处理效率。该方案利用线性寻址公式的特性,确保相同局部结构在不同位置具有一致的偏移模式。(149字)

大熊 48

iOS 两款你可能会用到的弹出框

前言好久没写博客了……最近拿到了一版原型图,各种弹框,简直快把老爷给弹死了……因为实现功能是其次的,最主要还得把这些东西给封装一下,方便同事的调用。于是乎,我就开始了爬坑的过程。经过两天的耕耘,出了两款风格迥异的弹框,这里给大家分享一下。。。同时也祭奠一下,我老去的容颜……效果图底部PickerView弹框(这个东西还是蛮常见的)view.gif中间TextView弹框(这个东西真不常见,Aler...

努力,可能成功!放弃,注定失败! 1661

Python爬虫实战:抓取统计数据并生成年度对比图表详解

国家统计局网站(静态HTML页面Excel文件JSON接口(部分新版API)我们将重点演示从统计公报页面抓取数据,结合解析Excel文件,实现多种数据格式爬取处理。本文从零开始搭建了一个爬取国家统计数据并制作年度对比图表的完整流程。读者可以根据实际需求调整爬取目标,丰富数据分析维度,甚至结合机器学习模型预测未来趋势。欢迎你在评论区留言分享你的爬虫实践,或提出改进建议!

2201_76125261的博客 1000

ardupilot 日志分析《xKF1信息》

ardupilot 日志分析系列将会把ardupilot所有的日志文档进行分析,为我们分析无人机的运行状态,炸鸡原因,传感器状态,电机状态,控制信息,滤波信息做准备。本节主要分析xKF1日志信息,欢迎批评指正。学习好ardupilot必须会分析飞行日志,从飞行日志中我们可以学到很多无人机的知识。无人机是综合知识的体现,涵盖:导航、控制、滤波、算法、协议等各种知识,只有更全面的学习,才能在无人机的道路上越走越远。

陌城烟雨 1225

UIPickerView选择控件实现选择轮播效果(转轮效果)

UIPickerView为用户提供了选择器功能,使用户yi'geng

超级马力 991

低代码组件开发——OpenClaw智能助手的组件设计与开发(2026技术版)

OpenClaw智能助手的低代码组件开发平台采用分层架构设计,包含组件定义、注册、配置、渲染和生命周期管理等核心模块。该系统支持UI、功能、数据和集成四种组件类型,强调可重用性、可配置性和可扩展性。组件定义通过TypeScript、React等技术实现组件结构和行为的描述,组件注册中心基于Node.js和MongoDB管理组件版本。该平台通过React、Redux等技术实现组件渲染和状态管理,并提供完整的生命周期管理机制。这种架构设计显著提升了智能助手应用的开发效率和质量。

一键难忘的博客 407

OC之基本控件三

UIPikerView的使用 1. numberOfComponents:返回UIPickerView当前的列数 NSInteger num = _pickerView.numberOfComponents; NSLog( @"%d", num); 2. - (NSInteger)numberOfRowsInComponent:(NSInteger)component; 返回compone

时光代码 1028

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

UI基本控件(五):UIPikerView

UIPickerView是使用旋转轮或类似老虎机来显示一组或多组值的视图。 时钟应用中设置时间就是通过UIPickerView来实现的。 1.numberOfComponents:返回UIPickerView当前的列数 NSIntegernum = _pickerView.numberOfComponents; NSLog( @"%d", num); 2.- (NSInteger)numberOfRowsInComponent:(NSInteger)component;返...

努力进阶的小菜鸟 906

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: audio file stream
下一篇: object c内存管理(1)
whichapple
博客等级 码龄16年 2粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值