uitextField限制字数方法和抖动效果

这个方法也是在网上找的。具体如下:

.h文件

#import <UIKit/UIKit.h>

@interface UITextField (LimitLength)
/**
 *  使用时只要调用此方法,加上一个长度(int),就可以实现了字数限制,汉字不可以
 *
 *  @param length
 */
- (void)limitTextLength:(int)length;
/**
 *  uitextField 抖动效果
 */
- (void)shake;
@end

.m文件

#import "UITextField+LimitLength.h"
#import <objc/runtime.h>

@implementation UITextField (LimitLength)
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];

    if(self.text.length > length){

        self.text = [self.text substringToIndex:length];
    }
}

- (void)shake
{
    CAKeyframeAnimation *keyAn = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    [keyAn setDuration:0.5f];
    NSArray *array = [[NSArray alloc] initWithObjects:
                      [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],
                      [NSValue valueWithCGPoint:CGPointMake(self.center.x-5, self.center.y)],
                      [NSValue valueWithCGPoint:CGPointMake(self.center.x+5, self.center.y)],
                      [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],
                      [NSValue valueWithCGPoint:CGPointMake(self.center.x-5, self.center.y)],
                      [NSValue valueWithCGPoint:CGPointMake(self.center.x+5, self.center.y)],
                      [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],
                      [NSValue valueWithCGPoint:CGPointMake(self.center.x-5, self.center.y)],
                      [NSValue valueWithCGPoint:CGPointMake(self.center.x+5, self.center.y)],
                      [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],
                      nil];
    [keyAn setValues:array];

    NSArray *times = [[NSArray alloc] initWithObjects:
                      [NSNumber numberWithFloat:0.1f],
                      [NSNumber numberWithFloat:0.2f],
                      [NSNumber numberWithFloat:0.3f],
                      [NSNumber numberWithFloat:0.4f],
                      [NSNumber numberWithFloat:0.5f],
                      [NSNumber numberWithFloat:0.6f],
                      [NSNumber numberWithFloat:0.7f],
                      [NSNumber numberWithFloat:0.8f],
                      [NSNumber numberWithFloat:0.9f],
                      [NSNumber numberWithFloat:1.0f],
                      nil];
    [keyAn setKeyTimes:times];

    [self.layer addAnimation:keyAn forKey:@"TextAnim"];
}
@end
<span style="font-size: 14px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在调用的地方如下:</span>

[m_userNamelimitTextLength:8];

这个类有个问题,就是不能对中文做限制,也会crash . 在使用时要注意,可以对textField设置键盘类型。

下个整理点:category与associative作为objective-c的扩展机制的两个特性,category即类型,可以通过它来扩展方法;associative,可以通过它来扩展属性;

uitextField限制字数方法和抖动效果

时间: 2024-10-13 10:46:37

uitextField限制字数方法和抖动效果的相关文章

UITextField限制字数方法

? ? ? ? 今天被这个问题坑了一天.在UITextField的delegate方法里,各种判断.结果还是有bug.最明显的是中文输入模式下,联想输入可以突破字数限制. 今天找到一种方法,注册观察者UITextFieldTextDidChangeNotification.如果UITextField内容改变,就计算字数并判断. 分三步走: 第一步:注册观察者. [[NSNotificationCenter defaultCenter] addObserver:self selector:@sel

android 实现带清除效果的EditText(附带抖动效果)

Android一直没有提供类似于ios中自带清除效果的输入框(ios只要只要添加属性即可实现),所以在Android当中 想要实现此效果就需要使用自定义控件的方式实现. 思路:可以使用一个Linearlayout里面横向布局一个EditText和一个删除的图片,监听输入框的焦点和文字变化,设置图片的显隐和点击清除事件.但是这么做些弊端,首先增加了UI布局的层级结构不利于UI结构的优化而且可能会出现文字过长遮挡住图片的情况.所以采用自定义控件继承于EditText,使用getCompoundDra

振动和抖动效果

1.得到系统的振动器 Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); 2.设置振动时间 vibrator.vibrate(500); // vibrator.vibrate(1000); // long[] pattern = new long[]{300,500,700,900}; //pattern 震动变化的时间段 //repeat 从pattern的哪个数组下标开始震动 // vibrator.vibr

jQuery实现抖动效果

//抖动效果 //intShakes:抖动次数:intDistance:抖动左右距离:intDuration:持续时间 jQuery.fn.shake = function (intShakes, intDistance, intDuration) { this.each(function () { var jqNode = $(this); jqNode.css({ position: 'relative' }); for (var x = 1; x <= intShakes; x++) {

jq实现果冻抖动效果

jq代码实现的果冻抖动效果:http://www.huiyi8.com/js/ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <hea

Mac - 实现删除按钮的抖动效果

在mac中实现删除按钮的抖动效果,使用核心动画 注意!注意!注意!!!这里在代理里面设置是关键啊!!   [self.window.contentView setWantsLayer:YES]; 必须设置setWantsLayer为YES - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {     // Insert code here to initialize your application    

仿IPhone 长按图标删除应用,图标抖动效果

仿IPhone 长按图标删除应用,图标抖动效果 使用ValueAnimator类实现,长点击图标,图标抖动的效果,可以自己规定抖动的程度大小. 由于Animator类是在android3.0之后才加上去的,所以,为了兼容3.0以下的机子,就导入了nineoldandroid.jar包,实现兼容. 工程源代码: 点击下载 仿IPhone 长按图标删除应用,图标抖动效果

android控件抖动效果

原文:android控件抖动效果 源代码下载地址:http://www.zuidaima.com/share/1550463689706496.htm android实现控件抖动效果 源代码截图:

Android实战简易教程-第六十七枪(android动画实现窗口抖动效果)

在制作引用是我们可以引入android动画,让用户感觉到交互性更强,下面我们通过一个实例讲解一下如何使用android动画实现窗口的抖动效果. 1.引入动画文件: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@ani