/ で を使用しているため、カーソル/UITextField
キャレット/虫めがねを非表示にして、テキストの編集を防ぐにはどうすればよいですか?inputView
UIPickerView
UIDatePickerView
に設定userInteractionEnabled
しNO
ても機能しません。これは、タッチを受信しなくなり、キーボードが表示されなくなるためです。
/ で を使用しているため、カーソル/UITextField
キャレット/虫めがねを非表示にして、テキストの編集を防ぐにはどうすればよいですか?inputView
UIPickerView
UIDatePickerView
に設定userInteractionEnabled
しNO
ても機能しません。これは、タッチを受信しなくなり、キーボードが表示されなくなるためです。
サブクラス 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];
}
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;
}
UIPickerView/UIDatePicker の結果からプログラムでテキストを設定するだけです。
これがお役に立てば幸いです。
カーソル UIColor を設定 -> 空。UI では非表示になります。
[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor clearColor] forKey:@"insertionPointColor"];
相互作用なしでを持ち、UITextField
それでも で動作するにはinputView
:
これらのメソッドを使用して UITextField をサブクラス化します。
// Hide the cursor
- (CGRect)caretRectForPosition:(UITextPosition*)position
{
return CGRectZero;
}
// All touches inside will be ignored
// and intercepted by the superview
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
return NO;
}
最後の方法では、UITextField
.
UITableViewCell
これは、たとえばテキストフィールドを使用している場合にうまく機能し、を介して firstResponder ステータスを切り替えることができますtableView:didSelectRowAtIndexPath:
。
ファーストレスポンダーにする以外のテキストフィールドとのやり取りを無効にするには、テキストフィールドの真上に同じサイズの UIButton を配置するだけです。ボタン タップ イベントのコードは次のようになります。
- (IBAction)btnEditPhoneTapped:(id)sender
{
if (self.tfClientPhoneNo.isFirstResponder == NO) [self.tfClientPhoneNo becomeFirstResponder];
}