我在文本字段上执行两项操作: 1)使用平移手势移动文本字段。 2)在用户点击文本字段时写入。 值得关注的是,我想一次执行一个操作,即当用户正在编写时,他无法滚动,反之亦然。
UIButton动作的名称---按钮 UIButton出口名称--- optionButton
- (IBAction)button:(id)sender
{
if([_optionButton.titleLabel.text isEqualToString:@"SCROLL"])
{
NSLog(@"can scroll");
NSLog(@"POINT=============%d ",point);
point=0;
[_optionButton setTitle:@"WRITE" forState:UIControlStateNormal];
textField1.enabled=NO;
}
else
{ NSLog(@"can write");
NSLog(@"POINT=============%d ",point);
point=1;
[_optionButton setTitle:@"SCROLL" forState:UIControlStateNormal];
textField1.enabled=YES;
}
}
点变量控制完整操作,并在开头设置为1.这意味着用户可以在开头写入,如果他想写,他必须按下按钮。 我面临的问题是,通过使用“ textField1.enabled = NO ”,我无法滚动文本字段。 是否有任何函数可用于从文本字段中删除焦点但可以滚动它。
答案 0 :(得分:13)
您可以使用此代码删除焦点(如其中一条评论所述),
[textField1 resignFirstResponder];
答案 1 :(得分:1)
您还可以通过调用[textField1 endEditing:YES]
答案 2 :(得分:0)
UITextfield只有1行,所以你不能滚动它。
更新
如果您想用手指移动您的UITextfield,请在父视图中使用UIPanGestureRecognizer
并在您的uitextfield中应用更改。
答案 3 :(得分:0)
您只需按照以下步骤操作:
将UITextFieldDelegate实施到您的控制器
class ClassName: UIViewController, UITextFieldDelegate {....}
实施" textFieldShouldBeginEditing"功能强>
class ClassName: UIViewController, UITextFieldDelegate {
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
return false
}
}
因此,在textFieldShouldBeginEditing中返回false将不允许编辑到UITextField。