我编写了自己的UITextField子类:
BWPicker.h
@interface BWPicker : UITextField
...
@end
BWPicker.m
@implementation BWPicker
- (BOOL)shouldChangeTextInRange:(UITextRange *)range replacementText:(NSString *)text
{
return NO;
}
...
@end
但由于某种原因,覆盖不起作用,我仍然可以编辑文本字段的内容。
另一种选择是实现UITextInputDelegate,但我真的不想设置self.delegate = self;
。
是否还有其他方法可以阻止编辑,最好不使用代理? (我仍然希望能够通过self.text = ...
)
答案 0 :(得分:0)
shouldChangeTextInRange
不是UITextField
的方法,它解释了当您继承UITextField
时覆盖不起作用的原因,因为没有任何内容可以覆盖。
如果你不想做self.delegate = self,你可以随时继承UITextFieldDelegate
并在那里实现textField:shouldChangeCharactersInRange:replacementString:
,比如MyTextFieldDelegate,并将self.delegate设置为该实例。或者只是禁用它:
someTextField.enabled = NO;