IOS学习之xcode5下实现CaseTool

来源:互联网 发布:淘宝显示多少人付款 编辑:程序博客网 时间:2024/05/18 09:14

转载请注明出处

作者:小马


对IOS开发的感兴趣,刚好工作中也用到了,边学边写博客,还是那句话,好记性不如烂博客。不过这个系列的博客都是以实际的工程示例切入,不会写objective-c语法,假设读者至少语言语法基础已经具备。

第一篇以<<objective-c 基础教程>> 里的CaseTool(以下简称CT)入手,这个例子是在xcode3.1开发的, 实现一个很简单的把用户输入的字符串,转成大小写的功能,不过现在很少有人还在用这样的旧版本,新版本的xcode在UI 设计机制变化很大. 所以处理方法也不一样,我这里就把在xcode5版本下实现CT的方法分享一下,另外,后面还有一些扩展应用。 最终的效果图如下:


新建一个ios, single view工程, 然后打开xxx.storyboard,会看到一个view, 然后拖两个按钮,一个label, 一个text field, 重新命名,布局好, 像下面这样:

2

然后我们为这四个”控件”与view controller(VC)之间建立connection, 这是xcode下的机制,如果你懂得MFC,可能会好理解一些,有点像mfc里的控件变量。 先给按钮加入连接, 首先切换到assistant editor视图, 点击右上角的这个图标:

新的视图如下所示:

按住 Control 键并从按钮元素拖动到 ViewController.h 头文件,这时会弹一个connection窗口, 


首先最上面我们选action, 加入IBAction连接就可以,因为我们只关心它的动作, outlet 下面用到再说.然后命名UpperCase, event选 Touch Up Inside 事件, 因为我们要在用户的手指在按钮范围内抬起时发送消息.点击connect, xcode会自动在头文件和.m文件中加入相应的代码,如下:



同样的步骤,为lowercase按钮也加入一个连接. 我暂时不去实现.m中的方法,因为实现方法肯定要操作文本框和label,他们两个目前还没有变量关联,无法直接操作. 


下面我们为文本框和label加入connection, 也就是给它们分别连接一个变量(outlet), 仿照前面的步骤,不过这次我们要选outlet, 然后命名,连接,头文件变成下面这样子:

相当于把文本框与caseString关联起来,label与resultLabel关连接起来了. 最终创建了三个视图控制器下的连接:

·一个按钮的动作连接

·一个文本框的变量连接

·一个标签的变量连接


现在可以去实现按钮方法了,代码很简单:



扩展1

我们发现在xcode5+ios7的版本中,没有了以前的圆角按钮,也不能直接在IDE里直接设置背景色等, 新的button 没有边框, 没有背景色,看起来没这么明显,可以加一些代码把它他们突显一下,比如加一个红色的背景色(当然这个效果看起来也很丑,只是想强调功能,不考虑美感了).

首先要为刚才两个按钮再分别建立outlet, 注意理解这里,因为我们要设置背景色,操作的是按钮本身的属性,所以一定要用变量关联它们. 最终头文件的代码如下:

然后再viewDidLoad函数里添加代码,



效果参见本篇开头第一张图. 

扩展2

运行程序,当焦点在文本框时,会自动弹出键盘,但是你会发现,一旦这个键盘弹出来,就再也无法退出了。如下图所示:



我期望的效果应该是输入完成后,点击键盘上的某个键结束操作,键盘退出,实现这个功能,要用到”文本框委托”, 简单来讲,原理是文本框成为 first responder 就会自动调出键盘, 失去 first responder 状态时键盘就会自动收起,UITextFieldDelegate 协议是由 UIKit 框架定义的,其中包含了一个 textFieldShouldReturn: 方法,它在用户轻敲回车键时, 被文本框调用。我们可以实现这个方法让文本框失去 first responder 状态, 步骤如下:

第一步,把回车键改成Done模式,这个其实改不改都可以,只是这样更符合习惯, textFieldShouldReturn方法不管回车键是什么,都会触发的。


第二步,在文本框和VC之间建立一个delegate连接, 按住 Control 键并从文本框拖动黄色球体上,在弹出的面板上选择 delegate, 如下图所示:



然后添加代码,先到头文件,指定用 UITextFieldDelegate 协议, 如下所示:

然后是.m文件, 



运行程序,发现输入之后回车,键盘可以自行退出了.

源码下载地址:

https://github.com/pony-maggie/CaesTool

0 0
原创粉丝点击