全局异步和主线程异步区别改变PlaceHolder颜色解决键盘弹起挡住文本框问题
Posted 华少不思议
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全局异步和主线程异步区别改变PlaceHolder颜色解决键盘弹起挡住文本框问题相关的知识,希望对你有一定的参考价值。
1、全局异步执行耗时任务
dispatch_async(dispatch_get_global_queue(0, 0), ^{
});
2.主线程异步刷新UI
dispatch_async(dispatch_get_main_queue(), ^{
});
3.改变PlaceHolder的颜色
[username_text setValue:[UIColor colorWithRed:1 green:1
blue:1 alpha:0.5]
forKeyPath:@"_placeholderLabel.textColor"];
4.解决键盘弹起挡住文本框的问题
//键盘弹起时重置View大小
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent
*)event{
[username_text resignFirstResponder];
[password_text resignFirstResponder];
NSTimeInterval animationDuration = 0.30f;
[UIView beginAnimations:@"ResizeForKeyboard"context:nil];
[UIView setAnimationDuration:animationDuration];
CGRect rect = CGRectMake(0.0f, 0.0f,self.view.frame.size.width,self.view.frame.size.height);
self.view.frame = rect;
[UIView commitAnimations];
}
//退出编辑(键盘落下)重置View大小
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
NSTimeInterval animationDuration = 0.30f;
[UIView beginAnimations:@"ResizeForKeyboard"context:nil];
[UIView setAnimationDuration:animationDuration];
CGRect rect = CGRectMake(0.0f, 0.0f,self.view.frame.size.width,self.view.frame.size.height);
self.view.frame = rect;
[UIView commitAnimations];
[textField resignFirstResponder];
return YES;
}
5.开始编辑(键盘弹起)通过控件Y坐标计算View显示范围
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
CGRect frame = password_text.frame;
int offset = frame.origin.y + 32 -
(self.view.frame.size.height - 216.0);
NSTimeInterval animationDuration = 0.30f;
[UIView beginAnimations:@"ResizeForKeyBoard"
context:nil];
[UIView setAnimationDuration:animationDuration];
floatwidth =self.view.frame.size.width;
floatheight =self.view.frame.size.height;
if(offset > 0)
{
CGRect rect = CGRectMake(0.0f, -
offset,width,height);
self.view.frame = rect;
}
[UIView commitAnimations];
}
以上是关于全局异步和主线程异步区别改变PlaceHolder颜色解决键盘弹起挡住文本框问题的主要内容,如果未能解决你的问题,请参考以下文章
Java学习笔记-------String,StringBuffer,StringBuilder区别以及映射到的同步,异步相关知识