Я наследую свой класс MFTextField от UITextField. Я хочу настроить фрейм свойства rightView UITextField с помощью свойства IBInspectable из Interface Builder. Для этого:
IB_DESIGNABLE
@interface MFTextField : UITextField <UITextFieldDelegate, MFComponentValidationDelegate>
@property (nonatomic) IBInspectable CGRect errorViewFrame;
@end
И в моем MFtextField.m:
-(CGRect)rightViewRectForBounds:(CGRect)bounds {
if(CGRectEqualToRect(CGRectZero, self.errorViewFrame)) {
//default position
CGRect rightViewRect = self.errorView.bounds;
rightViewRect.size.height = bounds.size.height - 4;
rightViewRect.origin.y = 2;
rightViewRect.origin.x = bounds.size.width - rightViewRect.size.width - 2;
return rightViewRect;
}
else {
//Custom position
return self.errorViewFrame;
}
}
Я заявляю о своем правеВид:
self.errorView = [[[NSBundle bundleForClass:[self class]] loadNibNamed:@"MFErrorView" owner:nil options:nil] firstObject];
self.rightView = self.errorView;
self.rightView = UITextFieldViewModeAlways;
Хорошо. Теперь я вижу свой правый вид с позицией по умолчанию в IB, и мне разрешено настраивать его фрейм:
Но когда я хочу изменить значение моего свойства IBinspectable кадра просмотра ошибок, XCode начинает бесконечный цикл, а затем падает... Кажется, что метод rightViewRectForBounds: теперь бесконечно вызывается iOS...
Есть идеи ?
rightViewRectForBounds
, только из вашего кода я могу сказать, что он никогда не вызывается ни вами, ни IB. - person A-Live   schedule 14.04.2015rightViewRectForBounds
предполагается вызываться. - person A-Live   schedule 15.04.2015