分享

34、当键盘弹起的时候,需要在键盘上方加个工具条。

 雪柳花明 2016-04-06
1、加入效果如下: 

2、这里的工具条(继承UIView),可以使用xib,也可以使用代码来实现。使用xib比较麻烦,也能实现。这里使用代码实现。


3、自定义一个工具条。在发微博控制器中,使用该代码,将该工具条添加到键盘的上方。工具栏的内容是什么与"发微博控制器"无关,这样便保证了良好的封装性。这里工具栏中什么工具被点击了,需要告诉"发微博控制器"。所以呢,要在工具栏中设置一个代理,让"发微博控制器"遵守该协议,并实现该代理方法。

// 添加工具条

- (void)setupToolbar

{

    // 1.创建

    HMComposeToolbar *toolbar = [[HMComposeToolbar alloc] init];

    toolbar.width = self.view.width;

    toolbar.delegate = self;//设置toolbar的代理为发微博控制器,有消息便通知该控制器。

    toolbar.height = 44;

    // 2.显示

    self.textView.inputAccessoryView = toolbar;

}

4、自定义的工具条,在该工具条中需要设置背景色,新浪提供的背景图片仅仅是一个竖线。通过以下方法,使其扩展整个工具条。
self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithName:@"compose_toolbar_background"]];

4.5 为每个button设置相应的图片,此方法设置的是照片的原始大小。[button setImage:[UIImage imageWithName:icon] forState:UIControlStateNormal];

5、在layoutSubviews为工具条子控件添加frame.因为所有的子控件都在subViews中,拿到SubViews的子控件一一为其设置frame即可。


6、"发微博控制器"需要监听工具条,处理监听点击事件。所以需要成为工具条的代理。即为

HMComposeToolbar类设置代理。


7、这里需要判断哪个按钮被按下了,以便处理相关操作。这里不能依赖内部细节。不能通过按钮的图片来判断,因为这样就不能保证内部细节了。如何判断呢?使用枚举是一个很好的方法,为每个button设置一个特定的枚举值。根据枚举值判断哪个按钮被点击了。

typedef enum {

    HMComposeToolbarButtonTypeCamera, // 照相机

    HMComposeToolbarButtonTypePicture, // 相册

    HMComposeToolbarButtonTypeMention, // 提到@

    HMComposeToolbarButtonTypeTrend, // 话题

    HMComposeToolbarButtonTypeEmotion // 表情

} HMComposeToolbarButtonType;


8、添加按钮,设计一个很好的方法,有norml时的照片,有高亮的照片,还要有tag值。

- (void)addButtonWithIcon:(NSString *)icon highIcon:(NSString *)highIcon tag:(HMComposeToolbarButtonType)tag

{  UIButton *button = [[UIButton alloc] init];

    button.tag = tag;

    [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];

    [button setImage:[UIImage imageWithName:icon] forState:UIControlStateNormal];

    [button setImage:[UIImage imageWithName:highIcon] forState:UIControlStateHighlighted];

    [self addSubview:button];

}

这样添加button按钮只需要5行代码即可。简化代码。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多