1. //
  2. // MyTextField.m
  3. // DriverEpoch
  4. //
  5. // Created by 思 彭 on 2017/10/12.
  6. // Copyright © 2017年 http://halohily.com. All rights reserved.
  7. //
  8.  
  9. #import "MyTextField.h"
  10.  
  11. @implementation MyTextField
  12.  
  13. -(CGRect)placeholderRectForBounds:(CGRect)bounds
  14. {
  15. CGRect inset = CGRectMake(bounds.origin.x+, bounds.origin.y, bounds.size.width -, bounds.size.height);//更好理解些
  16. return inset;
  17. }
  18.  
  19. // 修改文本展示区域,一般跟editingRectForBounds一起重写
  20. - (CGRect)textRectForBounds:(CGRect)bounds
  21. {
  22. CGRect inset = CGRectMake(bounds.origin.x+, bounds.origin.y, bounds.size.width-, bounds.size.height);//更好理解些
  23. return inset;
  24. }
  25.  
  26. // 重写来编辑区域,可以改变光标起始位置,以及光标最右到什么地方,placeHolder的位置也会改变
  27. -(CGRect)editingRectForBounds:(CGRect)bounds
  28. {
  29. CGRect inset;
  30. if (self.text.length > ) {
  31. // 这里100可能需要自己调整一下使其居中即可
  32. inset = CGRectMake(bounds.origin.x + , bounds.origin.y, bounds.size.width - bounds.size.width / , bounds.size.height);//更好理解些
  33. }
  34. // NSLog(@"%@",self.text);
  35. else {
  36.  
  37. inset = CGRectMake(bounds.origin.x+bounds.size.width / , bounds.origin.y, bounds.size.width - bounds.size.width / , bounds.size.height);//更好理解些
  38. }
  39. return inset;
  40. }
  41.  
  42. @end

定义textField:

  1. username = [[MyTextField alloc] initWithFrame:CGRectMake(DEAppWidth * 0.04, , DEAppWidth * 0.84, )];
  2. username.backgroundColor = [UIColor lightGrayColor];
  3. username.delegate = self;
  4. username.textAlignment = NSTextAlignmentCenter;
  5. // username.backgroundColor = [UIColor lightGrayColor];
  6. username.textColor = [UIColor blackColor];
  7. username.font = [UIFont fontWithName:@"Times New Roman" size:];
  8. username.placeholder = @"请输入用户名";
  9. username.autocorrectionType = UITextAutocorrectionTypeNo;
  10. username.autocapitalizationType = UITextAutocapitalizationTypeNone;
  11. username.clearButtonMode = UITextFieldViewModeWhileEditing;

实现效果如下:

注意: 这里截图光标不明显,实际光标是在“入”和“用”字中间的。。。

这里还是有些小bug。。。待完善。。。

小技巧:

可以用个假象去代替,就是直接文字居中,然后点击光标时候就把灰色底子用label去换,然后根据输入删除去判断当前是否有文字输入。

iOS实现TextField光标居中的更多相关文章

  1. iOS 限制TextField输入长度(标准)

    iOS 限制TextField输入长度(标准) 网上有很多限制textField输入长度方法,但是我觉得都不是很完美,准确来说可以说是不符合实际开发的要求,因此在这里整理一下textField限制输入 ...

  2. 【小知识点】input输入框在安卓以及IOS手机中光标及字体不居中解决方法

    问题根本:不要使用line-height垂直居中. 解决方法:可直接定义height,然后高度由上下padding值撑开. input { height: 1rem; padding: 1rem 0; ...

  3. iOS 限制textField输入的长度

    1.电话号码(带3-3-4效果) //指定代理 self.phoneTextField.delegate = self; //当编辑改变的时候,进行字符校验 [self.phoneTextField ...

  4. iOS对textField进行字符长度限制的办法

    在项目开发过程中,遇到这么一个需求,编辑标签时,输入的最大长度需要限制为24个字节. 查阅了一些材料,并参考了之前项目的相关处理办法,今天在这里总结一下解决方案. 1.写一个截取字符串的方法,将超长的 ...

  5. 解决只读时ios下input光标问题

    应用场景:在ios手机下对只读的input设置readonly=readonly属性还是会出现光标 解决方法: //解决ios日期光标问题 $("#Stime ,#provinceCity& ...

  6. IOS中input光标跑偏问题的解决方法

    ios端兼容input光标高度处理 在最近的项目中遇到一个问题,input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上 当点击输入的时候,光标的高度和父盒子的高度一样.造成的原因就是给父盒子 ...

  7. IOS textView获取光标定位,以及选中

    当textview成为第一响应者的时候就会调用一个协议方法 - (void)textViewDidChangeSelection:(UITextView *)textView; 在这个协议方法中可以实 ...

  8. IOS开发 - TextField 控件详细

    //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, ...

  9. ios修改textField的placeholder的字体颜色和大小

    textField.placeholder = @"username is in here!"; [textField setValue:[UIColor redColor] fo ...

随机推荐

  1. 【16】大调 Leading Bass

    一小节2拍: (歌曲举例子) 菊花台(主).知足(主).青春修炼手册(副).记得(副).当你(副). 一小节1拍: (歌曲举例子) 菊花台(主).知足(主).青春修炼手册(副).记得(副).当你(副) ...

  2. ZZNU-OJ-2098 : Drink coffee【线段树合并区间或者 差分 + 二分索引树】

    : Drink coffee 时间限制: Sec 内存限制: MiB 提交: 答案正确: 提交 状态 讨论区 题目描述 为了在上课时保持清醒,凯伦需要一些咖啡.咖啡爱好者凯伦想知道最佳的温度来冲煮完美 ...

  3. .Net优秀应用界面大PK!DevExpress年度大赛,群雄逐鹿花落谁家

    DevExpress 优秀界面图片火热征集中! 只要您晒出来,慧都就为您颁奖! 角逐前三,百度AI音箱.小米行李箱等惊喜大礼等您Pick! 活动时间:12月1日-12月31日 立即参与 活动详情 活动 ...

  4. C# 任务、线程、同步(四)

    Timer 类使用 static void Main(string[] args) { ThreadingTimer(); TimersTimer(); Console.Read(); } stati ...

  5. Spring自动注入Bean

    通过@Autowired或@Resource来实现在Bean中自动注入的功能,但还要在配置文件中写Bean定义,下面我们将介绍如何注解Bean,从而从XML配置文件 中完全移除Bean定义的配置. 1 ...

  6. myeclipse打开jsp后死掉,或变卡的问题

    很多小伙伴在myeclipse下打开jsp会特别卡,甚至会卡死掉,我也遇到过很多次这种情况,下面分享一下解决方法: 1,打开 Window -> Preferences -> Genera ...

  7. 【概率论】2-3:贝叶斯定理(Bayes' Theorem)

    title: [概率论]2-3:贝叶斯定理(Bayes' Theorem) categories: Mathematic Probability keywords: Bayes' Theorem 贝叶 ...

  8. jira默认是jira_user用户组的用户有登录jira的权限

    场景描述: 今天给jira新建了几个用户组,看着英文的jira_user和jira_developer有点多余,所以就给删掉了.然后后面新建了开发人员和测试人员用户组,进行了人员分配和项目分配,可是突 ...

  9. Jmeter随机参数各种搭配

    参数配置应该有三种场景,具体其他的我还没想到 一.两个固定值之间随机生成一个值,应用场景没有限制 1.最简单的两个值之间随机产生一个整数作为值,打开函数助手 2.选择函数 __Random 然后我想要 ...

  10. ZR#955 折纸

    ZR#955 折纸 解法: 可以发现折纸之后被折到上面的部分实际上是没有用的,因为他和下面对应位置一定是一样的,而影响答案的只有每个位置的颜色和最底层的坐标范围.因此,我们只需要考虑最底层即可,即我们 ...