How do I prevent the editing of text in a UITextField
along with hiding the cursor/caret/magnifying glass, but still present the keyboard, as I am using an inputView
with a UIPickerView
/UIDatePickerView
?
Setting userInteractionEnabled
to NO
does not work, because it no longer receives any touches and will not present the keyboard.
Subclass UITextField
//Disables caret
- (CGRect)caretRectForPosition:(UITextPosition *)position
{
return CGRectZero;
}
//Disables magnifying glass
-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
{
if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
{
gestureRecognizer.enabled = NO;
}
[super addGestureRecognizer:gestureRecognizer];
}
In your UITextFieldDelegate
//Prevent text from being copied and pasted or edited with bluetooth keyboard.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
return NO;
}
Now just set your text programmatically from the result of your UIPickerView/UIDatePicker.
Hiding the cursor is a lot simpler in iOS 7. Still need some trickery to disable the loupe
textField.tintColor = [UIColor clearColor];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With