swift UI专项训练25 网址输入完毕事件

简介:    首先我们运行一下上一话中写好的程序看看有什么问题。我们发现点击return是没有反应的,这是因为我们之前设置了文本框为这个界面的第一反应者,我们要得到键盘的返回必须对键盘做一些操作。

   首先我们运行一下上一话中写好的程序看看有什么问题。



我们发现点击return是没有反应的,这是因为我们之前设置了文本框为这个界面的第一反应者,我们要得到键盘的返回必须对键盘做一些操作。从textfield入手,添加一个方法:

func textFieldShouldReturn(textField: UITextField) -> Bool {
       textField.resignFirstResponder()
        return true
        
    }

这是一个点击返回按钮输入框消失的方法,其中在返回之前我们要把textfield的第一反应者身份解除掉。现在我们需要把访问浏览器中的网址的方法加上,调用之前定义的loadurl方法,上面的方法修改如下:

func textFieldShouldReturn(textField: UITextField) -> Bool {
      loadurl(textField.text, web: web1)
        textField.resignFirstResponder()
        return true
        
    }

调用了loadurl方法,有两个参数,第一个是url,就是我们在搜索栏输入的网址,另一个是呈现的webview,只有一个,之前我们拖过来的web1。另外有一点要注意,完整的url需要有http://,但是我们输入的时候不想输入这部分,那就需要在loadurl方法中做些小改动,加上地址的前缀。

  func loadurl(url:String ,web:UIWebView){
    let aurl = NSURL(string: "http://" + url)
        let urlrq = NSURLRequest(URL: aurl!)
        web.loadRequest(urlrq)
    
    }

完整的控制器代码如下:

//
//  ViewController.swift
//  WebBrowser
//
//  Created by 陈刚 on 15/2/28.
//  Copyright (c) 2015年 cg. All rights reserved.
//

import UIKit

class ViewController: UIViewController,UIWebViewDelegate,UITextFieldDelegate{
    @IBOutlet weak var loading: UIActivityIndicatorView!
    @IBOutlet weak var textField1: UITextField!

    @IBOutlet weak var web1: UIWebView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    //载入网页请求
    func loadurl(url:String ,web:UIWebView){
    let aurl = NSURL(string: "http://" + url)
        let urlrq = NSURLRequest(URL: aurl!)
        web.loadRequest(urlrq)
    
    }
    //网页开始载入
    func webViewDidStartLoad(webView: UIWebView) {
        loading.startAnimating()
        UIApplication.sharedApplication().networkActivityIndicatorVisible = true
    }
    //网页结束载入
    func webViewDidFinishLoad(webView: UIWebView) {
        loading.stopAnimating()
        UIApplication.sharedApplication().networkActivityIndicatorVisible = false
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func textFieldShouldReturn(textField: UITextField) -> Bool {
      loadurl(textField.text, web: web1)
        textField.resignFirstResponder()
        return true
        
    }
}

现在来运行下看下效果:



输入一个访问时间比较长的网址,然后点击return按钮


可以看到在读取过程中我们设置的小齿轮和左上角系统自带的小齿轮都在转动提示进程



完成,可以正常使用了。

目录
相关文章
|
机器学习/深度学习 数据可视化 算法
基于深度学习的瓶子检测软件(UI界面+YOLOv5+训练数据集)
基于深度学习的瓶子检测软件(UI界面+YOLOv5+训练数据集)
1109 0
|
测试技术 Swift iOS开发
探索iOS自动化测试:使用Swift编写UI测试
【8月更文挑战第31天】在软件开发的海洋中,自动化测试是保证船只不偏离航线的灯塔。本文将带领读者启航,深入探索iOS应用的自动化UI测试。我们将通过Swift语言,点亮代码的灯塔,照亮测试的道路。文章不仅会展示如何搭建测试环境,还会提供实用的代码示例,让理论知识在实践中生根发芽。无论你是新手还是有经验的开发者,这篇文章都将是你技能提升之旅的宝贵指南。
|
存储 数据管理 数据库
CoreData 在 swift UI 中的使用
当谈到在 Swift UI 中进行本地数据持久化,Core Data 是一个强大且常用的解决方案。Core Data 是苹果提供的一种数据存储和管理框架,用于在应用程序中创建、读取、更新和删除数据。它提供了一个对象图管理器,可以将数据映射到对象,并提供了一种简化数据操作的方式。在本文中,我们将深入介绍 Core Data 在 Swift UI 中的使用。
CoreData 在 swift UI 中的使用
|
机器学习/深度学习 数据可视化 算法
水果新鲜程度检测系统(UI界面+YOLOv5+训练数据集)
水果新鲜程度检测系统(UI界面+YOLOv5+训练数据集)
1437 1
|
机器学习/深度学习 人工智能 监控
基于深度学习的人群密度检测系统(UI界面+YOLOv5+训练数据集)
基于深度学习的人群密度检测系统(UI界面+YOLOv5+训练数据集)
1708 0
|
机器学习/深度学习 人工智能 算法
基于深度学习的农作物叶片病害检测系统(UI界面+YOLOv5+训练数据集)
基于深度学习的农作物叶片病害检测系统(UI界面+YOLOv5+训练数据集)
1625 1
|
机器学习/深度学习 传感器 监控
基于YOLOv5的停车位检测系统(清新UI+深度学习+训练数据集)
基于YOLOv5的停车位检测系统(清新UI+深度学习+训练数据集)
1663 0
|
机器学习/深度学习 监控 算法
智能生活垃圾检测与分类系统(UI界面+YOLOv5+训练数据集)
智能生活垃圾检测与分类系统(UI界面+YOLOv5+训练数据集)
1946 0
|
开发框架 前端开发 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发一
本文介绍了方舟开发框架(ArkUI)及其两种开发范式:基于ArkTS的声明式开发范式和类Web开发范式。ArkUI是用于构建HarmonyOS应用界面的UI框架,提供极简UI语法和基础设施。声明式开发范式使用ArkTS语言,以组件、动画和状态管理为核心,适合复杂团队协作;类Web开发范式采用HML、CSS、JavaScript三段式开发,适用于简单界面应用,贴近Web开发者习惯。文中还概述了两者的架构和基础能力,帮助开发者选择合适的范式进行高效开发。
459 15
|
编解码 前端开发 Java
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发三
本文介绍了基于声明式UI范式的图形绘制与动画效果实现方法,涵盖绘制图形、添加动画效果及常见组件说明三部分内容。在绘制图形部分,详细讲解了如何通过Circle组件为食物成分表添加圆形标签,以及使用Path组件结合SVG命令绘制自定义图形(如应用Logo)。动画效果部分则展示了如何利用animateTo实现闪屏动画,包括渐出、放大效果,并设置页面跳转;同时介绍了页面间共享元素转场动画的实现方式。最后,文章列举了声明式开发范式中的各类组件及其功能,帮助开发者快速上手构建复杂交互页面。
467 11

相关课程

更多