• AJ学IOS 之微博项目实战(12)发送微博自定义工具条代理实现点击事件


    AJ分享,必须精品

    一:效果

    这里写图片描述

    二:封装好的工具条

    NYComposeToolbar.h

    带代理方法

    
    
    #import <UIKit/UIKit.h>
    
    typedef enum {
        NYComposeToolbarButtonTypeCamera, // 拍照
        NYComposeToolbarButtonTypePicture, // 相册
        NYComposeToolbarButtonTypeMention, // @
        NYComposeToolbarButtonTypeTrend, // #
        NYComposeToolbarButtonTypeEmotion // 表情
    } NYComposeToolbarButtonType;
    
    @class NYComposeToolbar;
    
    @protocol NYComposeToolbarDelegate <NSObject>
    @optional
    - (void)composeToolbar:(NYComposeToolbar *)toolbar didClickButton:(NYComposeToolbarButtonType)buttonType;
    @end
    
    @interface NYComposeToolbar : UIView
    @property (nonatomic, weak) id<NYComposeToolbarDelegate> delegate;
    @end
    

    NYComposeToolbar.m

    //
    //  NYComposeToolbar.m
    //  Created by apple on 14-10-20.
    //  Copyright (c) 2014年 heima. All rights reserved.
    //
    
    #import "NYComposeToolbar.h"
    
    @implementation NYComposeToolbar
    
    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"compose_toolbar_background"]];
    
            // 初始化按钮
            [self setupBtn:@"compose_camerabutton_background" highImage:@"compose_camerabutton_background_highlighted" type:NYComposeToolbarButtonTypeCamera];
    
            [self setupBtn:@"compose_toolbar_picture" highImage:@"compose_toolbar_picture_highlighted" type:NYComposeToolbarButtonTypePicture];
    
            [self setupBtn:@"compose_mentionbutton_background" highImage:@"compose_mentionbutton_background_highlighted" type:NYComposeToolbarButtonTypeMention];
    
            [self setupBtn:@"compose_trendbutton_background" highImage:@"compose_trendbutton_background_highlighted" type:NYComposeToolbarButtonTypeTrend];
    
            [self setupBtn:@"compose_emoticonbutton_background" highImage:@"compose_emoticonbutton_background_highlighted" type:NYComposeToolbarButtonTypeEmotion];
        }
        return self;
    }
    
    /**
     * 创建一个按钮
     */
    - (void)setupBtn:(NSString *)image highImage:(NSString *)highImage type:(NYComposeToolbarButtonType)type
    {
        UIButton *btn = [[UIButton alloc] init];
        [btn setImage:[UIImage imageNamed:image] forState:UIControlStateNormal];
        [btn setImage:[UIImage imageNamed:highImage] forState:UIControlStateHighlighted];
        [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
        btn.tag = type;
        [self addSubview:btn];
    }
    
    - (void)layoutSubviews
    {
        [super layoutSubviews];
    
        // 设置所有按钮的frame
        NSUInteger count = self.subviews.count;
        CGFloat btnW = self.width / count;
        CGFloat btnH = self.height;
        for (NSUInteger i = 0; i<count; i++) {
            UIButton *btn = self.subviews[i];
            btn.y = 0;
            btn.width = btnW;
            btn.x = i * btnW;
            btn.height = btnH;
        }
    }
    
    - (void)btnClick:(UIButton *)btn
    {
        if ([self.delegate respondsToSelector:@selector(composeToolbar:didClickButton:)]) {
    //        NSUInteger index = (NSUInteger)(btn.x / btn.width);
            [self.delegate composeToolbar:self didClickButton:btn.tag];
        }
    }
    @end
    

    三:调用

    设置代理并且实现代理方法

    /**
     * 添加工具条
     */
    - (void)setupToolbar
    {
        NYComposeToolbar *toolbar = [[NYComposeToolbar alloc] init];
        toolbar.width = self.view.width;
        toolbar.height = 44;
        toolbar.y = self.view.height - toolbar.height;
        toolbar.delegate = self;
        [self.view addSubview:toolbar];
        self.toolbar = toolbar;
    }
    

    代理方法

    #pragma mark - NYComposeToolbarDelegate
    - (void)composeToolbar:(NYComposeToolbar *)toolbar didClickButton:(NYComposeToolbarButtonType)buttonType
    {
        switch (buttonType) {
            case NYComposeToolbarButtonTypeCamera: // 拍照
    //            [self openCamera];
                NYLog(@"--- 拍照");
                break;
    
            case NYComposeToolbarButtonTypePicture: // 相册
                NYLog(@"--- 相册");
    //            [self openAlbum];
                break;
    
            case NYComposeToolbarButtonTypeMention: // @
                NYLog(@"--- @");
                break;
    
            case NYComposeToolbarButtonTypeTrend: // #
                NYLog(@"--- #");
                break;
    
            case NYComposeToolbarButtonTypeEmotion: // 表情键盘
                NYLog(@"--- 表情");
                break;
        }
    }
    
  • 相关阅读:
    Freewriting23_Hunting job again.
    PYDay4基本数据类型、字符串、元组、列表、字典
    PYDay3初识python
    PYDay2linux基础\常用命令
    PYDay1洗剑
    ASP.NET 2.0中GridView无限层复杂表头的实现(datagrid大同小易,repeater就不必这样,直接有头模版布局就可以)
    JavaScript获取HTML DOM节点元素的方法的总结
    Asp.net中实现同一用户名不能同时登陆(转)
    在JS文件中写脚本几种常见的形式
    获取repeater中头模版中的控件时要加从controls[0]
  • 原文地址:https://www.cnblogs.com/luolianxi/p/4990285.html
Copyright © 2020-2023  润新知