只 一行显示可左右滚动的文本(UITextField中文限制)
//
// ViewController.m
// 一行显示可滚动的文本
//
// Created by apple on 15-5-8.
// Copyright (c) 2015年 apple. All rights reserved.
// #import "ViewController.h" @interface ViewController () {
UIScrollView *_scrollView;
UITextField *_textField1;
NSInteger _indextext;
}
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
_scrollView = [[UIScrollViewalloc]initWithFrame:CGRectMake(,CGRectGetHeight(self.view.bounds)/,CGRectGetWidth(self.view.bounds) - , )];
_scrollView.showsHorizontalScrollIndicator = NO;
_scrollView.showsHorizontalScrollIndicator = NO;
_scrollView.bounces = NO;
_scrollView.layer.borderWidth = ;
[self.view addSubview:_scrollView]; NSMutableAttributedString * attributedStr4 = [[NSMutableAttributedStringalloc]initWithString:@"请输入约会内容"];
[attributedStr4 addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:NSMakeRange(, attributedStr4.length)];
_textField1 = [[UITextField alloc]initWithFrame:CGRectMake(,,CGRectGetWidth(self.view.bounds) - , )];
_textField1.textAlignment = NSTextAlignmentRight;
_textField1.text = @"";
_textField1.textColor = [UIColor grayColor];
_textField1.font = [UIFont fontWithName:@"Helvetica-Bold" size:];
_textField1.attributedPlaceholder = attributedStr4;
[_textField1 addTarget:self action:@selector(textFieldEditChanged:)forControlEvents:UIControlEventEditingChanged];
[_scrollView addSubview:_textField1];
_scrollView.contentSize = CGSizeMake(CGRectGetWidth(_textField1.bounds),); }
- (void)textFieldEditChanged:(UITextField *)textField
{
if (CGRectGetWidth(_textField1.bounds) >=CGRectGetWidth(self.view.bounds) - ) {
_scrollView.contentSize =CGSizeMake(CGRectGetWidth(_textField1.bounds),);
NSLog(@"%.2f",_scrollView.contentSize.width);
if (_indextext != _textField1.text.length) {
[_textField1 sizeToFit];
[_scrollViewsetContentOffset:CGPointMake(CGRectGetWidth(_textField1.bounds) -CGRectGetWidth(_scrollView.bounds), ) animated:NO];
_indextext = _textField1.text.length;
}
}
else {
_textField1.frame = CGRectMake(, ,CGRectGetWidth(self.view.bounds) - , );
[_scrollView setContentOffset:CGPointMake(, ) animated:NO];
_scrollView.contentSize = CGSizeMake(CGRectGetWidth(self.view.bounds) - ,);
_indextext = _textField1.text.length; }
if (_textField1.text.length > ) {
_textField1.text = [_textField1.text substringToIndex:];
} } @end
补1:我这方法其实很笨,大家有好的方法共享出来,共同进步!
补2:textfield加个状态监听器-限制中文
- (void)viewDidLoad
{
[_textField addTarget:self action:@selector(textFieldEditChanged:) forControlEvents:UIControlEventEditingChanged]; [super viewDidLoad];
} - (void)textFieldEditChanged:(UITextField *)textField
{
NSLog(@"textField text : %@", [textField text]);
}
这样,无论是字母还是中文,都能动态获取
上面的中文限制是有bug的当你一直输入拼音不选择汉子到一定数量汉字联想自动关闭了
修改后链接:
http://www.cnblogs.com/hxwj/p/4560229.html
只 一行显示可左右滚动的文本(UITextField中文限制)的更多相关文章
- Android GridView 一行显示数据(包括图片和文本),解决的办法是计算数据占该行的宽度是多少
最近在做图片的浏览功能,开始是使用Gallery做,但是,达不到我想要的效果,关于使用Gallery显示缩略图的缺点和优点,不在详述了.以下是一个完整的Demo代码,注意我的模拟器是640*960. ...
- Java Swing 如何添加输入文字并且可以滚动的文本框?( JTextArea ,JScrollPane的使用)
准备: JTextArea 文本区,一个可以输入文字的文本框 常用方法: 1.setText(String t)设置文本区中显示的文本 2.getText() 获取文本区中显示的文本 JScrollP ...
- CSS3属性之text-overflow:ellipsis,指定多行文本中任意一行显示...
对于text-overflow:ellipsis,文本超出部分显示...,但要实现这个效果,却有一些必备条件,如下: div{ overflow:hidden; white-space:nowrap; ...
- Delphi TMemo 可以显示、编辑多行文本
多行编辑框组件(TMemo)TMemo组件可以显示.编辑多行文本,是一个标准的Windows多行编辑组件.对一些比较多的文本内容可以利用TMemo组件来显示.编辑. 1.TMemo组件的典型用法 TM ...
- tableview最后一行显示不全
最后一行显示不全是因为表格的高度大于了控制view的高度,减小表格的高度小于的等于控制的view的高度即可
- 多个div 一行显示的处理方式
1.方式一: 通过div的float属性,定义宽度,然后定义float属性和width的属性,实现多个div在一行显示: 2.方式二: 通过div的display的属性,至少进行2成div的displ ...
- Oracle一列的多行数据拼成一行显示字符
Oracle一列的多行数据拼成一行显示字符 oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数. www.2cto.com 先介绍:WMSYS.WM_CO ...
- 如何利用CSS代码使图片和文字在同一行显示且对齐
对于初学css的新手朋友来说,经常会遇到这样一个问题,当文字和图片出现在同一行或者同一个div里面的时候,在浏览器中运行出来的显示效果往往是在不同的行,那么,我们怎么才能利用CSS代码使图片和文字在同 ...
- js 在遍历时只会显示最后一个遍历到的结果
在做项目时遇到了一个关于遍历的问题, 前提是:在ul中有n个li每个li从后台获取的数据中有一个sign的字段,当sign等于0时(li未被点击过)li会显示一个红点,当sign不等于0时(li已被点 ...
随机推荐
- Oracle DB 分区特性概述 Overview of Partitions
概述:在Oracle数据库中,分区(partitioning)可以使非常大的表(table)或索引(index)分解为小的易管理的块(pieces),这些块被称作分区(partitions).每个分区 ...
- Nunit单元测试的使用
先建立一个需要测试的项目 安装nunit 通过nuget安装Install-Package Nunit 类前加[TestFixture] 要测试的方法前加[Test] using System; u ...
- Socket(1)
端口号可以从0~65535: 今天就写TCP相关.在下一节我会分别写有关UDP,还有MultiCastSocket. Socket的工作原理: 通信两端都建立一个Socket,从而两端形成虚拟链路.通 ...
- struts2传递参数值的3中方式
在使用struts2的时候,当要传递的参数不多的时候,我们会选择使用属性来传参,而当要传递的参数很多的时候,或者多个action会有共用的参数时,我们会使用另外两种传参方式. 注意:使用Model D ...
- Intent Android 详解
Intents and Intent Filters 三种应用程序基本组件 activity, service和broadcast receiver——是使用称为intent的消息来激活的. Inte ...
- C#.Net 图片处理大全
C# How to: Image filtering by directly manipulating Pixel ARGB values C# How to: Image filtering imp ...
- Golang的iota的特性
Golang的iota的特性: 1. iota在每个ConstBlock中自动归0. 2. iota在每个ConstSpec后自动增1. 换言之: iota是ConstBlock中ConstSpec的 ...
- verilog 学习笔记
1.在寄存器中: -1=1111 -2=1110 -3=1101 2.{1,0}=64‘H00000001_00000000;//默认是32位的位数-拼接: 3.defparam P1.Depth=1 ...
- Python实现C4.5(信息增益率)
Python实现C4.5(信息增益率) 运行环境 Pyhton3 treePlotter模块(画图所需,不画图可不必) matplotlib(如果使用上面的模块必须) 计算过程 st=>star ...
- Understanding Convolutions【转】
Understanding Convolutions In a previous post, we built up an understanding of convolutional neural ...