文档章节

inputView典型实现

Lambda8421
 Lambda8421
发布于 2016/01/31 16:11
字数 290
阅读 18
收藏 1
#import "PostDetailInputCommentView.h"

@interface PostDetailInputCommentView() <UITextFieldDelegate>

@end

@implementation PostDetailInputCommentView{
    MMButton *recordAudioBtn;
    MMButton *selectImageBtn;
}

- (void)addSubviews{
    CGFloat btnWH = 32;
    CGFloat originY = 6;
    
    recordAudioBtn = [MMButton initImageBtnWithFrame:CGRectMake(10, originY, btnWH, btnWH) backgroundImageStr:nil superView:self];
    recordAudioBtn.backgroundColor = [UIColor redColor];
    [recordAudioBtn addBorderWithRadius:btnWH/2 borderColor:[UIColor blackColor]];
    
    selectImageBtn = [MMButton initWithFrame:CGRectMake(recordAudioBtn.frame.origin.x + recordAudioBtn.frame.size.width + 6, originY, btnWH, btnWH) superView:self];
    selectImageBtn.backgroundColor = [UIColor greenColor];
    [selectImageBtn addBorderWithRadius:btnWH/2 borderColor:[UIColor blackColor]];
    
    
    CGFloat TFOriginX = selectImageBtn.frame.origin.x + selectImageBtn.frame.size.width + 6;
    _replyContentTF = [MMTextField initWithFrame:CGRectMake(TFOriginX, originY, DEVICE_W - TFOriginX, btnWH) textColor:[UIColor redColor] textFont:FONTSIZE14 placeholder:@"请输入评论" placeholderColor:[UIColor blueColor] superView:self];
    _replyContentTF.returnKeyType = UIReturnKeySend;
    _replyContentTF.delegate = self;
    [_replyContentTF addBorderWithRadius:0 borderColor:[UIColor grayColor]];
    
    [self addKeyboardNotificationCenter];
}

#pragma mark - UITextFieldDelegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    return NO;
}

#pragma mark keyboardaction
- (void)addKeyboardNotificationCenter {
    // Do any additional setup after loading the view.
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}

- (void)removeKeyboardNotificationCenter {
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}


- (void)keyboardAction:(NSNotification *)notification complete:(void(^)(CGFloat hKeyB))complete {
    NSDictionary *userInfo = [notification userInfo];
    NSValue *animationCurveObject =[userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey];
    
    NSValue *animationDurationObject =[userInfo valueForKey:UIKeyboardAnimationDurationUserInfoKey];
    
    NSValue *keyboardEndRectObject =[userInfo valueForKey:UIKeyboardFrameEndUserInfoKey];
    
    NSUInteger animationCurve = 0;
    double animationDuration = 0.0f;
    CGRect keyboardEndRect = CGRectMake(0,0, 0, 0);
    [animationCurveObject getValue:&animationCurve];
    [animationDurationObject getValue:&animationDuration];
    [keyboardEndRectObject getValue:&keyboardEndRect];
    
    CGFloat hKeyB = 0;
    hKeyB = keyboardEndRect.size.height;
    
    [UIView beginAnimations:@"keyboardAction" context:NULL];
    [UIView setAnimationDuration:animationDuration];
    [UIView setAnimationCurve:(UIViewAnimationCurve)animationCurve];
    complete(hKeyB);
    [UIView commitAnimations];
}

#pragma mark Responding to keyboard events

- (void)keyboardWillShow:(NSNotification *)notification {
        [self keyboardAction:notification complete:^(CGFloat hKeyB) {
            CGRect frame = self.frame;
            frame.origin.y = DEVICE_H - hKeyB - 40;
            self.frame = frame;
        }];
}

- (void)keyboardWillHide:(NSNotification *)notification {
        [self keyboardAction:notification complete:^(CGFloat hKeyB) {
            //        CGRect frame = self.frame;
            //        frame.origin.y = hKeyB - 22;
            //        self.frame = frame;
        }];
}

- (void)dealloc {
    [self removeKeyboardNotificationCenter];
}


© 著作权归作者所有

共有 人打赏支持
Lambda8421
粉丝 10
博文 121
码字总数 121640
作品 0
闸北
程序员
私信 提问
自定义键盘的设置或者自由切换处理

UITextView / UITextField在编辑时,在不做任何处理的情况下,系统默认会自动弹出系统键盘。在一些情况下,需要使用自定义键盘,因此需要对系统键盘处理,1) 自定义键盘就是inputView属性,...

奋斗的青春年华
2016/09/01
38
0
UITextView / UITextField的异同点

UITextField继承UIControl 1.文字永远是一行,不能显示多行文字 2.有placehoder属性设置占位文字 3.继承自UIControl 4.监听行为 1> 设置代理 2> addTarget:action:forControlEvents: 3> 通知...

奋斗的青春年华
2016/08/30
10
0
iOS 选择器示例--PickerDemo

PickerDemo 包括: 1)UITextField inputView 作为 UIDatePicker 2)UITextField inputView 作为UIPickerView...

叶秀兰
2014/12/08
549
0
UIResponder 对象详解

在 iOS 中,一个 UIResponder 对象表示一个可以接收触摸屏上的触摸事件的对象,通俗一点的说,就是表示一个可以接收事件的对象。 iOS 中,所有显示在界面上的对象都是从 UIResponder 直接或间...

武宗涛
2012/10/16
0
0
UITextField的常见应用和其属性子控件的位置布局

首先,UITextField的主要特别特征就是会自动弹出键盘让你进行输入信息,因此,很多关于弹出键盘的问题,优先想到是使用UITextField的inputView的inputView和inputAccessoryView(这个一般使用...

奋斗的青春年华
2016/07/04
7
0

没有更多内容

加载失败,请刷新页面

加载更多

Java单例模式学习记录

在项目开发中经常能遇见的设计模式就是单例模式了,而实现的方式最常见的有两种:饿汉和饱汉(懒汉)。由于日常接触较多而研究的不够深入,导致面试的时候被询问到后有点没底,这里记录一下学习...

JerryLin123
昨天
2
0
VSCODE 无法调试

VSCODE 无法调试 可以运行 可能的原因: GCC 的参数忘了加 -g

shzwork
昨天
3
0
理解去中心化 稳定币 DAI

随着摩根大通推出JPM Coin 稳定币,可以预见稳定币将成为区块链落地的一大助推器。 坦白来讲,对于一个程序员的我来讲(不懂一点专业经济和金融),理解DAI的机制,真的有一点复杂。耐心看完...

Tiny熊
昨天
4
0
5.线程实现

用于线程实现的Python模块 Python线程有时称为轻量级进程,因为线程比进程占用的内存少得多。 线程允许一次执行多个任务。 在Python中,以下两个模块在一个程序中实现线程 - _thread 模块 th...

Eappo_Geng
昨天
4
0
ServiceLoader

创建一个接口文件在resources资源目录下创建META-INF/services文件夹在services文件夹中创建文件,以接口全名命名创建接口实现类 内容me.zzp.ar.d.PostgreSQLDialectme.zzp.ar.d.Hype...

Cobbage
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部