UITextField输入字符限制,中英文混排
//
// UITextField+Category.m
// StudentClient
//
// Created by 张宁宁 on 16/8/1.
// Copyright © 2016年 lirenkj. All rights reserved.
//
#import "UITextField+Category.h"
@implementation UITextField (Category)
static NSString *kLimitTextLengthKey = @"kLimitTextLengthKey";
- (void)limitTextLength:(int)length{
objc_setAssociatedObject(self, (__bridge const void *)(kLimitTextLengthKey), [NSNumber numberWithInt:length], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
[self addTarget:self action:@selector(textFieldTextLengthLimit:) forControlEvents:UIControlEventEditingChanged];
}
- (void)textFieldTextLengthLimit:(id)sender
{
NSNumber *lengthNumber = objc_getAssociatedObject(self, (__bridge const void *)(kLimitTextLengthKey));
int length = [lengthNumber intValue];
//下面是修改部分
bool isChinese;//判断当前输入法是否是中文
NSArray *currentar = [UITextInputMode activeInputModes];
UITextInputMode *current = [currentar firstObject];
if ([current.primaryLanguage isEqualToString: @"en-US"]) {
isChinese = false;
}
else
{
isChinese = true;
}
if(sender == self) {
// length是自己设置的位数
NSString *str = [[self text] stringByReplacingOccurrencesOfString:@"?" withString:@""];
if (isChinese) { //中文输入法下
// int chineseLength = length/2;
UITextRange *selectedRange = [self markedTextRange];
//获取高亮部分
UITextPosition *position = [self positionFromPosition:selectedRange.start offset:0];
// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
if (!position) {
// if ( str.length>=length) {
int textcount = [self convertToInt:[self text]];
if ([self convertToInt:[self text]] >= length) {
NSString *strNew = [NSString stringWithString:str];
int chineseCount = [[NSString stringWithFormat:@"%lu",textcount - str.length] intValue];
int indexCount = (length/2 -(textcount - 2*chineseCount)/2 )+ (textcount - 2*chineseCount);
[self setText:[strNew substringToIndex:indexCount]];
}
}
else
{
// NSLog(@"输入的");
}
}else{
if ([str length]>=length) {
NSString *strNew = [NSString stringWithString:str];
[self setText:[strNew substringToIndex:length]];
}
}
}
}
-(int)convertToInt:(NSString*)strtemp {
int strlength = 0;
char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];
for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++) {
if (*p) {
p++;
strlength++;
}
else {
p++;
}
}
return strlength;
}
@end
UITextField输入字符限制,中英文混排相关推荐
- html中英文混排,EndNote中英文混排时et al和等的3种解决方法 | 科研动力
EndNote对于英文文献的处理很出色,但是对于中文文献的处理就有点别扭,尤其是中英文文献混排时更是不爽.木有关系,EndNote的强大这处之一就是可以驯服和调教.下面介绍3种如何处理中英文混排时et ...
- EndNote 高校_EndNote引文格式修改全攻略(一)——中英文混排问题
虽然今年受疫情影响较大,但大部分毕业生还是要在家码论文的.说到毕业论文,就必定要有格式修改,但对一些科研老手来讲可能论文修改也不一定能玩的很溜. 今天小编先带大家带来论文格式修改的第一部分内容,教你解 ...
- CTeX:中英文混排无法正常换行+字体调整+行距调整
关于无法正常换行:一行与一行有时会参差不齐 参考材料:ctex-faq"中英文混排是为何无法正确分排?" 简单地说,一是英文字符后面要空格,二是中英文字符间要隔开 关于字体调整:\ ...
- 参考文献名称怎么复制_[Zotero+Word]Zotero+Word2016参考文献中英文混排,解决et al和等的问题...
注: 参考文献是用chinese-gb7714-1987-...或chinese-gb7714-2005-...等csl生成的参考文献,也就是英文作者超过3个后面是"等". 其他参 ...
- 解决方案:Zotero实现参考文献中英文混排,将英文文献中的“等”转成“et al.”
Zotero 是一款非常实用且易于使用的参考文献管理工具,可帮助用户收集.整理和引用各种类型的文献,包括图书.期刊文章.网页等.在学术写作中起着重要作用. 但是其在中文世界中,运行起来偶尔会出现问题, ...
- Endnote生成GB/T7714-2005输出格式及中英文混排问题解决
这里写目录标题 GB/T7714-2005输出格式 中英文混排问题 GB/T7714-2005输出格式 step1. 在Endnote的官网(http://www.endnote.com/)下载Chi ...
- Word如何删除中英文混排中中文间的多余空格
如何快速批量删除word中多余的空格呢,尤其是中英文混排的文档,有时会有连续的多个空格,如何去掉中文中的空格,同时保留英语单词间的空格呢.今天就和朋友们说说去掉word中空格的简单好用的方法吧! 1. ...
- EndNote中英文混排时et al和等的3种解决方法
EndNote对于英文文献的处理很出色,但是对于中文文献的处理就有点别扭,尤其是中英文文献混排时更是不爽.木有关系,EndNote的强大这处之一就是可以驯服和调教.下面介绍3种如何处理中英文混排时et ...
- EndNote中英文混排时et al和等的解决方法
EndNote对于英文文献的处理很出色,但是对于中文文献的处理就有点别扭,尤其是中英文文献混排时更是不爽.木有关系,EndNote的强大这处之一就是可以驯服和调教.下面介绍3种如何处理中英文混排时et ...
- 解决Android TextView中英文混排换行问题
文章目录 个人极不建议这样做(之后会说原因) 1 现象 2 解决思路 3不推荐的原因 个人极不建议这样做(之后会说原因) 1 现象 绿色底黄色框内的就是原生TextView出现的情况,出现这种情况的主 ...
最新文章
- Spring boot 上传文件时 MultipartFile 报空指针
- [BZOJ1502]月下柠檬树(自适应辛普森积分)
- [蓝桥杯]ALGO-188.算法训练_P0504
- ViewState笔记
- Python爬虫实战---抓取图书馆借阅信息
- SharePoint 2007 权限代码分享
- SPSS 相关性的选择
- Yii Framework2.0开发教程(5)数据库mysql函数
- 订阅付费专栏,支付299.9元,免费送代码
- win7查询计算机硬盘sn,电脑win7系统查询硬盘序列号的方法
- win7电脑设备序列号怎么查_win7硬盘序列号怎么看|win7查看硬盘序列号的方法
- Grid++用程序定义报表模板(官方例子)
- 自定义linux桌面,教您6个自定义Ubuntu桌面的步骤
- android apk安装工具,安卓装机必备工具!一键批量安装应用apk
- php 函数索引 中文索引
- 2022危险化学品经营单位主要负责人特种作业证考试题库及答案
- 计算机网络参数配置,计算机网络实验:实验一 主机系统网络参数配置与测试.doc...
- Zemax优化过程中的Rings和Arms
- 2.1 墒编码基本原理
- linux运维高薪职业及任职要求梳理
热门文章
- Linux安装FTP及使用python上传下载ftp
- 蓝桥杯 异或数列 python组
- mysql 建库 语法_mysql语法建库建表综合整理是示例
- 武侠乂怎么修改服务器,武侠乂新手怎么玩 武侠乂手游新手入门技巧
- html表格内图片填充颜色设置,使用HTML添加表格4(行颜色与表格嵌套)——零基础自学网页制作...
- 前端全局变量和局部变量
- python读写excel表格
- Android12 (S) 去掉悬浮通知消息及通知创建流程分析
- 关于表格的增删改!!我必须泄个恨了!!
- 应变.破局2022,合众致达逐梦.无惧