Swift3 重写一个带占位符的textView
class PlaceStrTextView: UIView,UITextViewDelegate{
var palceStr = "即将输入的信息" //站位文字
var inputStr = "" //输入的信息
//创建一个textView
lazy var textView:UITextView = {
let tv = UITextView()
tv.delegate = self
tv.text = self.palceStr
tv.textColor = UIColor.gray
tv.backgroundColor = UIColor.clear
tv.font = UIFont.systemFont(ofSize: 15)
return tv
}()
//私有方法
func overrideSelf(frame: CGRect) {
self.frame = frame
addTextView()
}
//添加textView
func addTextView(){
self.textView.frame = CGRect(x: 0, y: 0, width: self.frame.width, height: self.frame.height)
self.addSubview(self.textView)
}
func textViewDidBeginEditing(_ textView: UITextView) {
if textView.text == palceStr { //一旦开始编辑就将textView滞空并将颜色改为黑色
textView.text = ""
}
textView.textColor = UIColor.black
}
func textViewDidEndEditing(_ textView: UITextView) {
if textView.text == "" {//如果用户没有输入任何信息就显示站位字符串
textView.text = palceStr
textView.textColor = UIColor.gray
}else{//一旦输入了信息你则颜色变成黑色
textView.textColor = UIColor.black
}
}
func hiddenKeyBoard(){
(UIApplication.shared.delegate as! AppDelegate).window?.endEditing(true)
inputStr = textView.text
}
}
//调用示例
@IBOutlet weak var textView: PlaceStrTextView! override func viewDidLoad() {
super.viewDidLoad() // Do any additional setup after loading the view.
textView.palceStr = "埃及的妇女节阿萨德来看风景安东尼设计开发"
textView.overrideSelf(frame: textView.frame)
} override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
} @IBAction func tapAction(_ sender: Any) {
textView.hiddenKeyBoard()
print(textView.inputStr)
}
Swift3 重写一个带占位符的textView的更多相关文章
- 在Java中编写带占位符的SQL语句
C#中SQL中带占位符的语句 假设有一张学员信息表Student,通过表中的ID来找学员,查询的SQL语句如下 string sql = string.Format("select * fr ...
- WPF带占位符的TextBox
简介 效果图如下: 使用的XAML代码如下: <Window x:Class="PlaceHolderTextBox.MainWindow" xmlns="http ...
- SpringMVC(七) RequestMapping 路径中带占位符的URL
使用方法:在@RequestMapping("/delete/{id}")中,通过{id}带入pathvariable,然后在方法中,通过@PathVariable("变 ...
- 简易封装一个带有占位文字的TextView
在实际iOS应用开发中我们经常会用到类似于下图所示的界面,即带有占位文字的文本框:
- 用mysql写带占位符的select语句
sql.append(" AND t.f_user_name LIKE CONCAT('%',?,'%')");//模糊查询 sql.append(" AND t.f_u ...
- SpringBoot环境属性占位符解析和类型转换
前提 前面写过一篇关于Environment属性加载的源码分析和扩展,里面提到属性的占位符解析和类型转换是相对复杂的,这篇文章就是要分析和解读这两个复杂的问题.关于这两个问题,选用一个比较复杂的参数处 ...
- java使用poi操作word, 支持动态的行(一个占位符插入多条)和表格中动态行, 支持图片
依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifa ...
- 【SpringMVC】SpringMVC系列3之@PathVariable映射URL占位符参数
3.@PathVariable映射URL占位符参数 3.1.概述 带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义. ...
- spring源码解析(一)---占位符解析替换
一.结构类图 ①.PropertyResolver : Environment的顶层接口,主要提供属性检索和解析带占位符的文本.bean.xml配置中的所有占位符例如${}都由它解析 ②.Config ...
随机推荐
- 探索未知种族之osg类生物---起源
任何程序都是有生命的,是生命就需要呼吸.例如普通的windows程序,当运行完main()函数后,就需要进入消息循环,来监听用户的各种操作,以便做出及时的回应.这样的每次循环就像生命的每次呼吸,来维持 ...
- 含有选择器的 bootstrap菜单
var menu = new BootstrapMenu('#jsmind_container jmnode:not(.root)', { actions: [{ name: '展开节点', onCl ...
- rapidjson 的封装学习
#pragma once #include "Util.h" #include "rapidjson/writer.h" #include "rapi ...
- dedecms首页搜索 添加仿百度下拉框
1:找到uploads/templets/default/head.htm 2: 找到 <input name="q" type="text" clas ...
- Visual Studio Plus 开发
参考文档:Developing Visual Studio Extensions http://msdn.microsoft.com/en-us/library/dd885119(v=vs.120). ...
- canvas 实现烟花效果
一:创建画布 <canvas width="600" height="600" id="canvas" style="bor ...
- Linux 文件授权
Linux用户权限 在Linux操作系统中,root的权限是最高的,相当于windows的administrator,拥有最高权限,能执行任何命令和操作,在Linux系统中,通过UID来区分用 ...
- 2018.10.31 NOIP模拟 一些情报(倍增)
传送门 题目并不难(想) 其实就是用倍增维护几个树上信息. 也就这么几个: 子树内最长链及其后继点. 子树内次长链及其后继点. 子树内第三场链(也就是dzyodzyodzyo口中鬼畜的次次长链) 点i ...
- C++程序生成.exe文件,在文件夹中运行时闪现问题
问题描述:在IDE(此为Dev-C++)中编写C++程序,运行时会产生如下文字 但我想取消这三行的显示. 解决方法:1:在IDE中运行时,“请按任意键继续”是消失不掉的,但在该程序的保存路径下可以消灭 ...
- pyinstaller基本操作
pyinstaller 打包错误http://www.fmwei.com/linux/pyinstaller-lib-error.html 只需要复制python安装目录下的动态库到系统地动态库目录即 ...