Lui*_*Prá 104 uipickerview uitextfield ios
我正在做一个UITextField有UIPickerViewas的inputView.它很好,除了我可以通过复制,粘贴,剪切和选择文本进行编辑,我不想要它.只有Picker才能修改文本字段.
我明白了,我可以通过设置禁止编辑setEnabled或setUserInteractionEnabled到NO.好的,但TextField停止响应触摸和选择器不显示.
我能做些什么来实现它?
Nic*_*ood 126
使用textfield委托,有一个方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
Run Code Online (Sandbox Code Playgroud)
从此返回NO,用户编辑文本的任何尝试都将被拒绝.
这样您就可以启用该字段,但仍然可以阻止人们将文本粘贴到其中.
lee*_*lee 20
将尼克的答案翻译成迅捷:
P/S:返回false =>文本字段无法输入,键盘编辑.它只能通过code.EX:textField.text ="My String Here"来设置文本.
override func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
return false
}
Run Code Online (Sandbox Code Playgroud)
Ank*_*ain 16
这将是最简单的:
在viewDidLoad中:(仅为不应编辑的文本字段设置委托.
self.textfield.delegate=self;
Run Code Online (Sandbox Code Playgroud)
并插入此委托函数:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
return NO;
}
Run Code Online (Sandbox Code Playgroud)
而已!
在swift 3+中:
class MyViewController: UIViewController, UITextFieldDelegate {
override func viewDidLoad() {
self.myTextField.delegate = self
}
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
if textField == myTextField {
// code which you want to execute when the user touch myTextField
}
return false
}
}
Run Code Online (Sandbox Code Playgroud)
只需将UIButton准确地放在整个UITextField上,没有Label-text,这使得它"不可见".此按钮可以接收和委托触摸而不是Textfield,并且TextField的内容仍然可见.
在Swift中:
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
questionField.resignFirstResponder();
// Additional code here
return false
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76665 次 |
| 最近记录: |