我一直试图解决这个问题几天。我将不胜感激任何帮助。如果它对您有所影响,那么我的应用程序是免费的,并且被许多失去了自己说话能力的人使用。
该应用程序是文本到语音。我正在实现一个功能,如果他们键入文本,然后点击Return键,将发生以下情况:
我遇到的问题是当按下Return键时,光标向下移动一行。我认为有一个明确的textView并且光标向下一行(下面的图片)看起来很奇怪。其余的工作,甚至撤消功能。我已经尝试了很多建议,我在这里以编程方式移动光标,似乎没有任何工作。
以下是我用于执行上述步骤的代码。任何建议表示赞赏。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"]) {
[self speakText];
self.clearedText = self.textView.text;
self.undoReady = YES;
[self.clearButton setTitle:@"Undo" forState:UIControlStateNormal];
self.textView.text = @"";
[WANT TO MOVE CURSOR TO BEGINNING POSITION];
}
}
答案 0 :(得分:3)
这对我来说很好。
JSON.stringify(json_data);
只要您想将textview位置设置为开始,就可以使用此代码。
如果您希望光标在一个字母后面开始,请将范围更改为--inspect
。
答案 1 :(得分:0)
试试这个 -
textField.selectedTextRange = [textField
textRangeFromPosition:textField.beginningOfDocument
toPosition:textField.beginningOfDocument];
答案 2 :(得分:0)
使用textfield的委托方法
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {}
字符串为您提供按下的键字符。
在方法内检查回车/输入。
if ([string isEqualToString:@"\n"]) { }
然后在你的代码清除文本字段并将光标移动到下面的代码开头的“If语句”里面。
//Your code
self.txtView.text = @"";
textField.selectedTextRange = [textField textRangeFromPosition:textField.beginningOfDocument toPosition:textField.beginningOfDocument];
希望这会有所帮助。如果对你有所帮助,不要忘记接受答案。
答案 3 :(得分:0)
1) First Add UITextViewDelegate -
@interface SecondViewController : UIViewController<UITextViewDelegate>
2) To move the Cursor to the beginning position, use the Delegate method of TextView -
- (void)textViewDidBeginEditing:(UITextView *)textView {
dispatch_async(dispatch_get_main_queue(), ^{
textView.selectedRange = NSMakeRange(0, 0);
});
}
答案 4 :(得分:0)
UITextField
符合UITextInput
协议,该协议提供的方法可让您控制所选范围
-(void)textFieldDidBeginEditing:(UITextField *)textField {
textField.selectedTextRange = [textField
textRangeFromPosition:textField.beginningOfDocument
toPosition:textField.beginningOfDocument];
}