您的位置:首页 > 产品设计 > UI/UE

iOS UITextField修改信息

2016-04-16 17:18 309 查看
//

// SetNoteViewController.h

// HengTaiXinGolf

//

// Created by 欧阳荣 on 16/3/17.

// Copyright © 2016年 HengTaiXinGolf. All rights reserved.

//

#import "ParentsViewController.h"

@interface SetNoteViewController :
ParentsViewController

@property (nonatomic,strong)
UILabel * titleLabel;

@property (nonatomic)
int searchType;

@property (nonatomic,copy)
NSString *NameField;

@property (nonatomic,copy)
NSString * friendIDStr;

@end

//

// SetNoteViewController.m

// HengTaiXinGolf

//

// Created by 欧阳荣 on 16/3/17.

// Copyright © 2016年 HengTaiXinGolf. All rights reserved.

//

#import "SetNoteViewController.h"

#define kHZMaxLength 15

#define kEGMaxLength 15

@interface
SetNoteViewController ()

@end

@implementation SetNoteViewController

{

UITextField * _nameField;

}

-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle
*)nibBundleOrNil

{

self = [super
initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil];

if (self)

{

//[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBar.png"] forBarMetrics:UIBarMetricsDefault];

UILabel *titleLabel = [[UILabel
alloc]initWithFrame:CGRectMake(0,
0 , 100,
44)];

titleLabel.backgroundColor = [UIColor
clearColor]; //设置Label背景透明

titleLabel.font = [UIFont
boldSystemFontOfSize:KTitle];
//设置文本字体与大小

titleLabel.textColor = [UIColor
whiteColor]; //设置文本颜色

titleLabel.textAlignment =
NSTextAlignmentCenter;

titleLabel.text =
@"备注信息";
//设置标题

self.navigationItem.titleView = titleLabel;

}

return
self;

}

- (void)viewDidLoad {

[super
viewDidLoad];

// Do any additional setup after loading the view.

self.view.backgroundColor=kColor(234,
234,
243);

if (self.searchType ==
1) {

[self
createBackBtn];

}else{

[self
creatBackItem];

[self
createRightBtn];

}

[self
creatSaveView];

}

//增加修改框

-(void)creatSaveView{

UILabel * lab = [[UILabel
alloc]init];

if (self.searchType ==
1) {

lab.frame =
CGRectMake(14,
8 * KWIDTH +
64, IPHONE_WIDTH -
100, 16 *
KWIDTH);

}else{

lab.frame =
CGRectMake(14,
8 * KWIDTH,
IPHONE_WIDTH - 100,
16 * KWIDTH);

}

lab.text =
@"备注名";

lab.font = [UIFont
systemFontOfSize:14];

lab.textColor =
kColor(137,
137, 137);

[self.view
addSubview:lab];

UIView *view=[[UIView
alloc] init];

if (self.searchType ==
1) {

view.frame =
CGRectMake(0,
32*KWIDTH +
64, IPHONE_WIDTH,
40*KWIDTH);

}else{

view.frame =
CGRectMake(0,
32*KWIDTH,
IPHONE_WIDTH, 40*KWIDTH);

}

UIView *lineViewlight3=[[UIView
alloc] initWithFrame:CGRectMake(0,0,
IPHONE_WIDTH, 0.5)];

lineViewlight3.backgroundColor=kColor(200,200
, 200);

lineViewlight3.alpha=0.8;

[view addSubview:lineViewlight3];

UIView *lineViewlight4=[[UIView
alloc] initWithFrame:CGRectMake(0,
40*KWIDTH-0.5,
IPHONE_WIDTH, 0.5)];

lineViewlight4.backgroundColor=kColor(200,200
, 200);

lineViewlight4.alpha=0.7;

[view addSubview:lineViewlight4];

view.backgroundColor=[UIColor
whiteColor];

_nameField = [[UITextField
alloc]initWithFrame:CGRectMake(10*KWIDTH,
0, IPHONE_WIDTH-15*KWIDTH,
40*KWIDTH)];

_nameField.text =
self.NameField;

_nameField.borderStyle =
UITextBorderStyleNone;

_nameField.clearButtonMode=
UITextFieldViewModeAlways;

[[NSNotificationCenter
defaultCenter]addObserver:self
selector:@selector(textFiledEditChanged:)

name:@"UITextFieldTextDidChangeNotification"

object:_nameField];

[view addSubview:_nameField];

[self.view
addSubview:view];

}

-(void)textFiledEditChanged:(NSNotification*)obj{

UITextField *textField = (UITextField *)obj.object;

//过滤掉系统表情

// UITextView * textView;

//

// NSRange textRange = [textView selectedRange];

// [textView setText:[self disable_emoji:[textView text]]];

// [textView setSelectedRange:textRange];

NSString *toBeString = textField.text;

DSLog(@"-----toBeString 1 ----%@",toBeString);

BOOL isEmoj = [self
stringContainsEmoji:toBeString];

NSString * _showStr;

toBeString = [self
disable_emoji:toBeString];

// textField.text = toBeString;

DSLog(@"-----toBeString 2 -----%@",toBeString);

NSString *lang = [[UITextInputMode
currentInputMode]
primaryLanguage]; //
键盘输入模式

if([lang
isEqualToString:@"zh-Hans"]) {
//简体中文输入,包括简体拼音,健体五笔,简体手写

UITextRange *selectedRange = [textField
markedTextRange];

//获取高亮部分

UITextPosition *position = [textField
positionFromPosition:selectedRange.start
offset:0];

//没有高亮选择的字,则对已输入的文字进行字数统计和限制

if(!position) {

if(toBeString.length >
kHZMaxLength) {

textField.text = [toBeString
substringToIndex:kHZMaxLength];

_showStr = [toBeString substringToIndex:kHZMaxLength];

}

}

//有高亮选择的字符串,则暂不对文字进行统计和限制

else{

}

}

//中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

else{

if(toBeString.length >
kEGMaxLength) {

textField.text= [toBeString
substringToIndex:kEGMaxLength];

_showStr = [toBeString substringToIndex:kEGMaxLength];

}

}

DSLog(@" _showStr %@",_showStr);

if (isEmoj) {

if ([_showStr
length]) {

textField.text = _showStr;

}else{

textField.text = toBeString;

}

}

}

//判断NSString字符串是否包含emoji表情

- (BOOL)stringContainsEmoji:(NSString *)string

{

__block
BOOL returnValue =NO;

[string enumerateSubstringsInRange:NSMakeRange(0,
[string length])
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString *substring,
NSRange substringRange,
NSRange enclosingRange,
BOOL *stop) {

const
unichar hs = [substring
characterAtIndex:0];

// surrogate pair

if (0xd800) {

if (0xd800 <= hs && hs <=
0xdbff) {

if (substring.length >
1) {

const
unichar ls = [substring
characterAtIndex:1];

const
int uc = ((hs - 0xd800) *
0x400) + (ls - 0xdc00) +
0x10000;

if (0x1d000 <= uc && uc <=
0x1f77f) {

returnValue =YES;

}

}

}else
if (substring.length >
1) {

const
unichar ls = [substring
characterAtIndex:1];

if (ls ==
0x20e3) {

returnValue =YES;

}

}else {

// non surrogate

if (0x2100 <= hs && hs <=
0x27ff) {

returnValue =YES;

}else
if (0x2B05 <= hs && hs <=
0x2b07) {

returnValue =YES;

}else
if (0x2934 <= hs && hs <=
0x2935) {

returnValue =YES;

}else
if (0x3297 <= hs && hs <=
0x3299) {

returnValue =YES;

}else
if (hs == 0xa9 || hs ==
0xae || hs == 0x303d || hs ==
0x3030 || hs == 0x2b55 || hs ==
0x2b1c || hs == 0x2b1b || hs ==
0x2b50) {

returnValue =YES;

}

}

}

}];

return returnValue;

}

#pragma Mark --- 过滤表情

- (NSString *)disable_emoji:(NSString *)text

{

NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]"
options:NSRegularExpressionCaseInsensitive
error:nil];

NSString *modifiedString = [regex
stringByReplacingMatchesInString:text

options:0

range:NSMakeRange(0, [text
length])

withTemplate:@""];

return modifiedString;

}

//增加右键发表保存按钮

-(void)createRightBtn{

UIButton *btn = [UIButton
buttonWithType:UIButtonTypeCustom];

btn.frame =
CGRectMake(0,
0, 40,
20);

[btn setTitle:@"完成"
forState:UIControlStateNormal];

[btn setFont:[UIFont
systemFontOfSize:KTitle]];

[btn addTarget:self
action:@selector(rightBtnClicked)
forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *item = [[UIBarButtonItem
alloc]initWithCustomView:btn];

self.navigationItem.rightBarButtonItem =
item;

}

-(void)rightBtnClicked{

NSString *urlStr = [NSString
stringWithFormat:KmodifyFriendNameRemark];

if ([_nameField.text
length] < 21 && [_nameField.text
length]>=1) {

[self
setCustomizedClubInfoRequest:urlStr];

}else
if ([_nameField.text
length]==0)

{

// UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:@"不能为空"
delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

// [alertView show];

[self
setCustomizedClubInfoRequest:urlStr];

}

else

{

UIAlertView *alertView = [[UIAlertView
alloc]initWithTitle:@"提示"
message:@"超过字符限制"
delegate:self
cancelButtonTitle:@"确定"
otherButtonTitles:nil,
nil];

[alertView show];

}

}

-(void)setCustomizedClubInfoRequest:(id)sender

{

AFHTTPRequestOperationManager *man = [AFHTTPRequestOperationManager
manager];

man.responseSerializer = [AFHTTPResponseSerializer
serializer];

man.requestSerializer = [AFJSONRequestSerializer
serializer];//用json格式来上传参数

NSString *paraString = [MD5
encodeString:_nameField.text];

NSMutableDictionary *param = [NSMutableDictionary
dictionary];

[param setValue:KmemberId
forKey:@"memberId"];

[param setValue:self.friendIDStr
forKey:@"friendId"];

[param setValue:_nameField.text
forKey:@"nameRemark"];

[param setValue:KAPPID
forKey:@"appId"];

[param setValue:KappSecret
forKey:@"appSecret"];

[param setValue:[CommonTools
getTimeScamp] forKey:@"timestamp"];

[param setValue:[CommonTools
tokenmd5StringFromArray:@[[NSString
stringWithFormat:@"memberId%@",param[@"memberId"]],[NSString
stringWithFormat:@"friendId%@",param[@"friendId"]],[NSString
stringWithFormat:@"nameRemark%@",paraString],[NSString
stringWithFormat:@"appId%@",param[@"appId"]],[NSString
stringWithFormat:@"appSecret%@",param[@"appSecret"]],[NSString
stringWithFormat:@"timestamp%@",param[@"timestamp"]]]]
forKey:@"digest"];

[man POST:sender
parameters:param
success:^(AFHTTPRequestOperation *operation,
id responseObject) {

NSDictionary *dict = [NSJSONSerialization
JSONObjectWithData:responseObject
options:NSJSONReadingMutableContainers
error:nil];

DSLog(@"--------dict------%@",dict);

if ([dict[@"returnCode"]integerValue]==000000)
{

[WFHudView
showMsg:@"好友备注修改成功!"
inView:nil];

[UserModel
sharedInstance].isAddFriends =
@"modifyFriendNameRemark";

[[NSNotificationCenter
defaultCenter]postNotificationName:@"AgreeMentAddFriend"
object:nil];

if (self.searchType ==
1) {

[self
dismissViewControllerAnimated:NO
completion:nil];

}else{

[self.navigationController
popViewControllerAnimated:NO];

}

}else{

[WFHudView
showMsg:@"好友备注修改失败!"
inView:nil];

}

} failure:^(AFHTTPRequestOperation *operation,
NSError *error) {

NSLog(@"error %@",error);

}];

}

-(void)createBackBtn{

//自定义导航栏

UIImageView *navImgView = [[UIImageView
alloc]initWithFrame:CGRectMake(0,
0, IPHONE_WIDTH,
64)];

navImgView.image = [UIImage
imageNamed:@"top_bg"];

[self.view
addSubview:navImgView];

//自定义导航栏标题

self.titleLabel = [[UILabel
alloc]initWithFrame:CGRectMake(IPHONE_WIDTH/2-100,
5 ,
200, 64)];

self.titleLabel.text =
@"备注信息";

self.titleLabel.backgroundColor
= [UIColor clearColor];
//设置Label背景透明

self.titleLabel.font
= [UIFont
boldSystemFontOfSize:KTitle];
//设置文本字体与大小

self.titleLabel.textColor =
[UIColor whiteColor];
//设置文本颜色

self.titleLabel.textAlignment
= NSTextAlignmentCenter;

[self.view
addSubview:self.titleLabel];

//返回键

UIButton *backBtn = [UIButton
buttonWithType:UIButtonTypeCustom];

backBtn.frame =
CGRectMake(6,
64/7 +
6, 40,
64*5/7);

[backBtn setImage:[UIImage
imageNamed:@"title_bar_back"]
forState:UIControlStateNormal];

[backBtn addTarget:self
action:@selector(popViewController)
forControlEvents:UIControlEventTouchUpInside];

[self.view
addSubview:backBtn];

UIButton *btn = [UIButton
buttonWithType:UIButtonTypeCustom];

btn.frame =
CGRectMake(IPHONE_WIDTH -
60, 27,
40, 20);

[btn setTitle:@"完成"
forState:UIControlStateNormal];

btn.titleLabel.font = [UIFont
systemFontOfSize:16];

// btn.titleLabel.textColor = [UIColor redColor];

// [btn setFont:[UIFont systemFontOfSize:KTitle]];

[btn addTarget:self
action:@selector(rightBtnClicked)
forControlEvents:UIControlEventTouchUpInside];

[self.view
addSubview:btn];

}

//创建返回按钮

-(void)creatBackItem{

// CGFloat frameY = 0.0f;

UIBarButtonItem * leftItem =
nil;

if ([[[UIDevice
currentDevice] systemVersion]
floatValue] >= 7) {

// frameY = 0.0f;

leftItem = [[UIBarButtonItem
alloc] initWithImage:[[UIImage
imageNamed:@"title_bar_back"]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
style:UIBarButtonItemStyleDone
target:self
action:@selector(returnClicked)];

} else {

// frameY = 0.0f;

leftItem = [[UIBarButtonItem
alloc] initWithImage:[UIImage
imageNamed:@"title_bar_back"]
style:UIBarButtonItemStyleDone
target:self
action:@selector(returnClicked)];

}

self.navigationItem.leftBarButtonItem = leftItem;

}

-(void)returnClicked {

[self.navigationController
popViewControllerAnimated:NO];

}

- (void)didReceiveMemoryWarning {

[super
didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

/*

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

// Get the new view controller using [segue destinationViewController].

// Pass the selected object to the new view controller.

}

*/

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: