我创建了一个UITextField的子类来覆盖方法rightViewRectForBounds。
这是我的自定义类CustomTextField
@interface CustomTextField : UITextField
@end
@implementation CustomTextField
// override rightViewRectForBounds method:
- (CGRect)rightViewRectForBounds:(CGRect)bounds{
NSLog(@"rightViewRectForBounds");
CGRect rightBounds = CGRectMake(bounds.origin.x + 10, 0, 30, 44);
return rightBounds ;
}
@end
现在我设置我的ViewController来调用自定义类而不是UITextField。
#import "OutputViewController.h"
#import "CustomTextField.h"
@interface OutputViewController () <UITextFieldDelegate>
@property (strong, nonatomic) IBOutlet CustomTextField *field1;
@property (strong, nonatomic) IBOutlet UILabel *label1;
- (void)methodName
{
self.field1.rightView = self.label1;
}
属性rightView应该根据Apple的文档调用我的方法覆盖:“右侧覆盖视图放在由接收器的rightViewRectForBounds:方法返回的矩形中”。为什么我的覆盖不起作用?
对不起,如果这是一个糟糕的问题。我只编程了一个月。
答案 0 :(得分:1)
问题很可能是field1
实际上不是CustomTextField。通过断点或一些记录很容易确认这一点。
请记住,声明类的东西是不够的。那个东西实际上必须 那个类(多态)。实例具有类,完全不考虑您如何投射或声明引用它的变量。