我试图找到一种方法来阻止键盘在用户点击TextField时出现,但却无法找到方法。
我将textField链接到委托之后尝试了这段代码,但它仍然无法正常工作,代码正在记录,但键盘确实出现了。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
NSLog(@"BeginEditing");
return YES;
[textField resignFirstResponder];
}
当我使用NO
返回时,我失去了textField的焦点,这是我需要的。
我所拥有的textField充满了同一视图上按钮的值,这就是为什么我不希望键盘出现,同时我希望用户选择他们想要填充的textField。 / p>
答案 0 :(得分:3)
这对您有帮助。
-(BOOL)textFieldShouldBeginEditing:(UITextField*)textField {
UIView *dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
activeField.inputView = dummyView; // Hide keyboard, but show blinking cursor
return YES;
}
我测试过,它对我有用。希望这对有类似问题的其他人有用。
答案 1 :(得分:2)
如果您只是希望用户选择要填充的文本字段而不想显示键盘,则可以执行以下操作:
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { selectedTextFieldTag = textField.tag; return NO; }
使用selectedTextField
值来标识要填写代码的文本字段。 return NO
不允许出现键盘。
答案 2 :(得分:1)
[textField resignFirstResponder];将不会被调用,因为您在被调用之前从该方法返回。这不会发出警告吗?
尝试在此处返回NO,或者如果不起作用,请尝试在文本字段上禁用用户互动:
[myTextField setUserInteractionEnabled:NO];
答案 3 :(得分:0)
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
NSLog(@"BeginEditing");
[textField resignFirstResponder];
return YES;
}
答案 4 :(得分:0)
所以在这里你只需使用flag int变量将值赋给聚焦文本字段
在.h或.m文件中全局定义int i;
标志
之后在textField Delegate方法中使用以下代码...
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
if (textField == yourtextField1 ) {
i=1;
}
else if (textField == yourtextField2 ) {
i=2;
}
else if (textField == yourtextField3 ) {
i=3;
}
else if (textField == yourtextField4 ) {
i=4;
}
return NO;
}
-(IBAction)yourbutton1_Clicked:(id)sender{
if( i == 1){
yourtextField1.text=yourbutton1.titleLabel.text;
}
else if ( i == 2){
yourtextField2.text=yourbutton1.titleLabel.text;
}
else if ( i == 3){
yourtextField3.text=yourbutton1.titleLabel.text;
}
else if ( i == 4){
yourtextField4.text=yourbutton1.titleLabel.text;
}
else{
NSLog(@"Please Click On TextField");//here you can put AlertView Message
}
}
依旧.......
你也可以使用普通方法和按钮的发送者ID,也可以标记......