IOS 初级开发入门教程(五)TextField与ReturnKey实战练习

看完前面4章的内容,基本对IOS开发有一些认识了,这章我们继续动手去实践一下,学习文本和键盘的相关知识,以及通过一个交互式的案例演示文本与键盘的使用。

系列文章:



IOS 初级开发入门教程(三)探究应用及视图的生命周期变化


IOS 初级开发入门教程(四)基础控件使用小练习                                   


UIKit继承结构


我们通过这个UIKit继承结构图,我们试着找到本章要学习的TextFiled与TextView,去观察所属的继承关系。


界面视图

在控件的Filter中找到Label、TextFiled和Textview,拖拽到StoryBoard,画出界面如下:



代码界面

打开ViewController,在代码中实现UITextFieldDelegate和UITextViewDelegate委托协议。
将控件对象进行引用声明:(代码右边圆点拖拽到指定控件即可,细节操作上一章有讲到)

TextFiled清理图标和文本类型:(Keyboard Type:是软键盘类型)


控件委托代理:

import UIKit

class ViewController: UIViewController,UITextFieldDelegate,UITextViewDelegate {
    
    @IBOutlet weak var textField: UITextField!
    
    @IBOutlet weak var pwd: UITextField!
    
    @IBOutlet weak var textview: UITextView!
     //声明周期——创建
    override func viewDidLoad() {
        super.viewDidLoad()
        textField.returnKeyType=UIReturnKeyType.next;//设置软键盘Return类型为下一步
        textField.delegate = self;//委托给ViewController代理
        pwd.returnKeyType = UIReturnKeyType.done;//完成
        pwd.delegate = self;
    }}

软键盘Return类型:(显示中文,还得设置info.plist中Localization native development region 为 cn或china​ )

  • UIReturnKeyDefault,
  • UIReturnKeyGo,//去往
  • UIReturnKeyGoogle,
  • UIReturnKeyJoin,//加入
  • UIReturnKeyNext,//下一步
  • UIReturnKeyRoute,
  • UIReturnKeySearch,//搜索
  • UIReturnKeySend,//发送
  • UIReturnKeyYahoo,
  • UIReturnKeyDone,//完成
  • UIReturnKeyEmergencyCall
  • UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0)


虚拟机软键盘

如果使用的Mac虚拟机默认是使用电脑实体键盘的,需要取消勾选Connect Hardware Keyboard 。



收起键盘

TextFiled默认在编辑状态会调起软键盘,但是初次体验是无法自动收起键盘。那么就需要代码进行控制了。

一般对单个的UITextField调用resignFirstResponder方法, 就可以使其失去第一响应者即收起软键盘了。

本案例实现点击空白处自动收起键盘:

重写ViewController的touchesBegan或touchesEnded方法调用View.endEditing(true):

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        view.endEditing(true)
    }

TextField的软键盘Return事件处理:

到这里,是小练习的最后也是最重要环节。

我们先手打出textFieldShouldReturn方法。(该方法属于系统编辑器会自动提示)

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        NSLog("点击了FieldReturnKey");
       
        return true;
    }

练习题目:判断编辑框内容非空、文本框进行提示。

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        NSLog("点击了FieldReturnKey");
        
        if(textField == self.textField && self.textField.returnKeyType == UIReturnKeyType.next){
            if(self.textField.text == ""){
                textview.text = "账户不能为空!";
            }else{
                self.textField.resignFirstResponder();
                textview.text = "Next响应成功!";
                pwd.becomeFirstResponder();
            }
        }else if textField == self.pwd && pwd.returnKeyType == UIReturnKeyType.done{
            if self.textField.text == ""{
                self.pwd.resignFirstResponder();
                textview.text = "账户不能为空!";
                self.textField.becomeFirstResponder();
            }else if(textField.text == ""){
                textview.text = "密码不能为空!";
            } else{
                textview.text = "恭喜你!响应成功!";
            }
        }
        
        return true;
    }

代码逻辑比较常见,很简单。但是,细心的朋友会留意几点:self.变量名 、if()。

这里要说一下:首先,我们在方法参数中声明的textFiled和我们声明的全局变量textFiled,它俩重名了。参数中的textFiled表示该类型的控件,所有我们要使用自己声明的需要借助委托代理self.textFiled指明,不重名的一般可以不用加,但是规范代码肯定还是要加self的。另外,if判断加不加()都一样。


运行结果





  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾阳Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值