Disable Magnifying Glass in UITextField

穿精又带淫゛_ 提交于 2019-12-17 16:31:29

问题


Is there a way to prevent the user from moving the cursor in a UITextField? I'd like it to stay at the end of the string.


回答1:


There's no way to prevent them from moving the cursor. You can, however, prevent them from editing the text except at the end by implementing the

– textField:shouldChangeCharactersInRange:replacementString:

method in your text field's delegate.

Edit: you can also set userInteractionEnabled to NO so that the user can't tap the field. Call becomeFirstResponder manually so that the field gets focus since the user can't tap to focus.




回答2:


This is an old question, but I was looking for an answer to the same question, and found a solution.

It is actually quite simple to prevent the user from moving the cursor. Just subclass UITextField and provide the following implementation of caretRectForPosition:

- (CGRect)caretRectForPosition:(UITextPosition *)position
{
    return [super caretRectForPosition:self.endOfDocument];
}



回答3:


NO SUBCLASS needed.

You Could use UITextFieldDelegate. It will make disable magnifying glass & text selection.

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    textField.userInteractionEnabled = NO;
    return YES;
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
    textField.userInteractionEnabled = YES;
}

NB: This is just a bypass.




回答4:


I'd suggest to check the gestureRecognizers property.

You will find a lot of them in the array and might want to either remove them all or to find the ones that triggers the event you want to intercept and remove/replace it.

I used it to remove copy/paste and magnifying glass functionalities from an UITextField




回答5:


I haven't check if you can disable the magnifying glass, but the recommended way to selectively disable editing behavior in a UIResponder (and thus a UITextField) is to implement canPerformAction:withSender of UIResponder.

See UIResponder documentation.

Maybe if you return "NO" for the select and selectAll action you can disable it.

Another, more brutal, way is to intercept any touch event and reset the cursor to the end.



来源:https://stackoverflow.com/questions/866200/disable-magnifying-glass-in-uitextfield

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!