1

UITextViews1つの UI に 2 つあり、そのうちの 1 つはUITextViewファーストレスポンダです。もう 1 つUITextViewは編集不可です。編集不可をダブルタップするUITextViewと、キーボードが消えてしまい、これを避けたいです。彼らのキーボードは常に残るはずです。

4

4 に答える 4

1

テキスト ビューをダブルタップすると、カット、コピーなどのオプションを含む UIMenuController が表示されます。

したがって、要件を達成するには、User Interaction プロパティを NO (False) に設定します。

これがあなたが探しているものであることを願っています。

- ムルナル

于 2013-01-14T09:53:15.183 に答える
1

viewController を textView のデリゲートにして、 UITextViewDelegateメソッドNOから返すtextViewShouldEndEditing:

- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
    if (textView == self.editableTextView) {
        return NO;
    }
    return YES;
}
于 2013-01-14T09:56:50.730 に答える
0

これはデフォルトの動作ではありません。要件を達成するには、遅延メソッドshouldChangeTextInRangeを使用してこれを試し、テキストビューを編集可能にします

- (void)viewDidLoad
{
    [super viewDidLoad];
    //nonEditingTextView.editable = NO; 
    //make the nonEditingTextView editable
}

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if ( textView == nonEditingTextView ) {
        return NO;
    }
    return YES;
}
于 2013-01-14T09:46:29.813 に答える
0
//Firstly add the below code for keyboard notification into your viewdidload method.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keybordWillHide:) name:UIKeyboardWillHideNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keybordWillShow:) name:UIKeyboardWillShowNotification object:nil];

//Let the two textview's names be, NonEditable and Editable

//declare a flag globally
bool Appearflag;

//Then implement the two methods as follows

-(void)keybordWillHide:(NSNotification *)notification

{

    if ([NonEditable isFirstResponder] && Appearflag)
    {
        [Editable becomeFirstResponder];
    }else if ([Editable isFirstResponder])
    {
        Appearflag = NO;
    }
}

-(void)keybordWillShow:(NSNotification *)notification

{

    if ([Editable isFirstResponder])
    {
        Appearflag = YES;
    }
}
于 2013-01-14T11:49:42.377 に答える