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行代码即可。简化代码。 |
|
来自: 雪柳花明 > 《ios 开发项目遇到的问题》