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

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

系列文章:

IOS 初级开发入门教程(一)介绍篇

IOS 初级开发入门教程(二)第一个HelloWorld工程及StoryBoard使用


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


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


UIKit继承结构


IOS 初级开发入门教程(五)TextField与ReturnKey实战练习_第1张图片
我们通过这个UIKit继承结构图,我们试着找到本章要学习的TextFiled与TextView,去观察所属的继承关系。


界面视图

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

IOS 初级开发入门教程(五)TextField与ReturnKey实战练习_第2张图片


代码界面

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

IOS 初级开发入门教程(五)TextField与ReturnKey实战练习_第3张图片

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

IOS 初级开发入门教程(五)TextField与ReturnKey实战练习_第4张图片

控件委托代理:

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 。

IOS 初级开发入门教程(五)TextField与ReturnKey实战练习_第5张图片


收起键盘

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

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

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

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

override func touchesBegan(_ touches: Set, 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判断加不加()都一样。


运行结果

IOS 初级开发入门教程(五)TextField与ReturnKey实战练习_第6张图片




你可能感兴趣的:(IOS,IOS,开发从入门到精通)