Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 为什么UITextField子类背景图像不显示?_Objective C_Xcode_Oop_Interface Builder - Fatal编程技术网

Objective c 为什么UITextField子类背景图像不显示?

Objective c 为什么UITextField子类背景图像不显示?,objective-c,xcode,oop,interface-builder,Objective C,Xcode,Oop,Interface Builder,我在Interface Builder中设置了一个带有背景图像的UITextField。背景显示良好,但当我(在IB中)将类名切换到UITextField子类(ValidatedTextField)时,背景图像不会显示。有人能找出为什么我的UITextView子类不应该有图像的原因吗 其他信息 不知道这是否有帮助,但IB也给了我一些麻烦——有时不允许我更改这些文本字段的类名 //ValidatedTextField.h #进口 #导入“MBValidated.h” @接口ValidatedTex

我在Interface Builder中设置了一个带有背景图像的UITextField。背景显示良好,但当我(在IB中)将类名切换到UITextField子类(ValidatedTextField)时,背景图像不会显示。有人能找出为什么我的UITextView子类不应该有图像的原因吗

其他信息
不知道这是否有帮助,但IB也给了我一些麻烦——有时不允许我更改这些文本字段的类名

//ValidatedTextField.h
#进口
#导入“MBValidated.h”
@接口ValidatedTextField:UITextView
//允许的最大字符数
@属性(赋值,非原子)int mbMaxLength;
//验证状态的视觉指示器(复选标记等)
@属性(强,非原子)UIImageView*mbStatusImageView;
//字段是否可以为空
@要求的属性(赋值,非原子)布尔值;
//我们是否已成功验证
@属性(赋值,非原子)BOOL mbIsValid;
//验证并更新存储的已验证状态
-(BOOL)mbValidate;
@结束
//ValidatedTextField.m
#导入“ValidatedTextField.h”
@实现ValidatedTextField
@合成mbMaxLength、mbStatusImageView;
-(id)initWithFrame:(CGRect)帧
{
self=[super initWithFrame:frame];
如果(自我){
//初始化代码
}
回归自我;
}
//在此处设置任何默认值
-(无效)默认值
{
self.mbIsRequired=是;
self.mbIsValid=是;
}
-(BOOL)mbValidate
{    
//验证长度
如果(self.text.length>self.mbMaxLength)self.mbIsValid=NO;
//验证是否为空或已填充
如果(self.text.length==0&&self.mbIsRequired==YES)self.mbIsValid=NO;
返回self.mbIsValid;
}
-(无效)从NIB中唤醒
{
//设置默认值
[自我设定默认值];
}
@结束
//经验证的协议
#进口
@协议验证
//字段是否可以为空
@要求的属性(赋值,非原子)布尔值;
//我们是否已成功验证
@属性(赋值,非原子)BOOL mbIsValid;
//验证项目
-(BOOL)mbValidate;
@结束

您应该子类化UITextField,而不是UITextView

//ValidatedTextField.h
#import <UIKit/UIKit.h>
#import "MBValidated.h"

@interface ValidatedTextField : UITextView <MBValidated>

// the maximum characters allowed
@property (assign, nonatomic) int mbMaxLength;

// an visual indicator of the validation state (checkmark, etc)
@property (strong, nonatomic) UIImageView *mbStatusImageView;

// whether the field can be empty
@property (assign, nonatomic) BOOL mbIsRequired;

// whether we have succesfully validated
@property (assign, nonatomic) BOOL mbIsValid;

// validate and update stored validated state
-(BOOL)mbValidate;

@end




// ValidatedTextField.m
#import "ValidatedTextField.h"

@implementation ValidatedTextField

@synthesize mbMaxLength, mbStatusImageView;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code        
    }
    return self;
}

// set any default values here
-(void)mbSetDefaults
{
    self.mbIsRequired = YES;
    self.mbIsValid = YES;
}

-(BOOL)mbValidate
{    
    // validate length
    if(self.text.length > self.mbMaxLength) self.mbIsValid = NO;

    // validate empty or filled
    if(self.text.length == 0 && self.mbIsRequired == YES) self.mbIsValid = NO;

    return self.mbIsValid;
}

- (void)awakeFromNib
{
    // set defaults
    [self mbSetDefaults];
}

@end


// MBValidated Protocol
#import <Foundation/Foundation.h>

@protocol MBValidated <NSObject>

// whether the field can be empty
@property (assign, nonatomic) BOOL mbIsRequired;

// whether we have succesfully validated
@property (assign, nonatomic) BOOL mbIsValid;

// validate the item
-(BOOL)mbValidate;

@end