这是我对ios的第一个问题

我在UITextView中使用了两个View对象(textView1和textView2),每个对象都有一些字符限制,并具有以下几种情况:

  • 最初,用户只能输入textView1。
  • 当输入的textView1的字符数限制结束时,光标将自动移至textView2。
  • 构建项目后,如果用户点击textView2并尝试将其写入,则光标必须移至textView1(因为它为空)。

  • 我写了代码,除了第三个场景,一切正常,用户只能输入textView1,但重点仍然放在textView2

    重现步骤:
  • 构建项目
  • 用户首先点击textView2并尝试编写一些内容。
  • 根据书面代码,Focus保留在textView2中,但用户正在写入textView1(请参阅附件)

  • 这是快照:

    这是书面代码:
    - (void)viewDidLoad
    {
    [super viewDidLoad];
    [self.textView1 becomeFirstResponder];
    }
    
    - (void)textViewDidChange:(UITextView *)textView{
    NSInteger restrictedLengthForTextView1 = 110;
    NSInteger restrictedLengthForTextView2 = 130;
    NSString *temp=textView.text;
    if(textView == self.textView1){
        if([[textView text] length] > restrictedLengthForTextView1){
            textView.text=[temp substringToIndex:[temp length]-1];
            [textView resignFirstResponder];
            [self.textView2 becomeFirstResponder];
        }
    }else{
        if([[textView text] length] > restrictedLengthForTextView2){
            textView.text=[temp substringToIndex:[temp length]-1];
            [self.textView2 resignFirstResponder];
        }
    
    }}
    
    - void()textViewDidBeginEditing:(UITextView *)textView{
    NSInteger restrictedLengthForTextView1 = 110;
    
    NSLog(@"dalknwdlakwd");
    if([[self.textView1 text] length] < restrictedLengthForTextView1){
        if(textView == self.textView2){
            [self.textView2 resignFirstResponder];
            [self.textView1 becomeFirstResponder];
        }
    }}
    

    请在这里帮助我。

    最佳答案

    请按照以下步骤进行:

    在.h文件中

    @interface ViewController : UIViewController<UITextViewDelegate>
    {
        IBOutlet UITextView *txtView1;
        IBOutlet UITextView *txtView2;
    }
    @end
    

    在.m文件中
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    
        [txtView1 becomeFirstResponder];
        txtView2.editable=NO;
    }
    

    实现如下的textView委托方法:
    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    {
        if(textView.tag==1)
        {
            if([textView.text length]>25)
            {
                txtView2.editable=YES;
                [txtView2 becomeFirstResponder];
            }
        }
        return YES;
    }
    

    我以第一个textview中的文本长度限制为24个字符为例。
    我希望这能帮到您。

    关于ios - 光标的焦点没有移到ios中的下一个UITextView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18100065/

    10-12 00:12