Note that there are some explanatory texts on larger screens.

plurals
  1. PO[UIMenuController sharedMenuController].isMenuVisible always be NO in EGOTextView
    primarykey
    data
    text
    <p>Im employing <a href="https://github.com/enormego/EGOTextView" rel="nofollow">EGOTextView</a> to do NSAttributedString editing. There is a bug on <code>UIMenuController</code> which I couldn't get over. As the logic described in the following code, the UIMenu will alternately show and hide after a tap on the EGOTextView. But the fact is the <code>[UIMenuController sharedMenuController].isMenuVisible</code> will always get <strong>NO</strong>, that the code <code>[menuController setMenuVisible:NO animated:NO];</code> will never get called. Is there any tricky thing I have missed? Thanks for any suggestion!</p> <p><strong>EGOTextView.m</strong></p> <pre><code>- (void)tap:(UITapGestureRecognizer*)gesture { NSLog(@"[UIMenuController sharedMenuController].isMenuVisible :%d",[UIMenuController sharedMenuController].isMenuVisible); // It always log 0 even if the UIMenu is visible on the screen. if (_editable &amp;&amp; ![self isFirstResponder]) { [self becomeFirstResponder]; return; } [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showMenu) object:nil]; [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showCorrectionMenu) object:nil]; self.correctionRange = NSMakeRange(NSNotFound, 0); if (self.selectedRange.length&gt;0) { self.selectedRange = NSMakeRange(_selectedRange.location, 0); } NSInteger index = [self closestWhiteSpaceIndexToPoint:[gesture locationInView:self]]; if (_delegateRespondsToDidSelectURL &amp;&amp; !_editing) { if ([self selectedLinkAtIndex:index]) { return; } } UIMenuController *menuController = [UIMenuController sharedMenuController]; NSLog(@"menuController.menuVisible :%d", menuController.menuVisible); if ([menuController isMenuVisible]) { // never run into here [menuController setMenuVisible:NO animated:NO]; } else { if (index==self.selectedRange.location) { [self performSelector:@selector(showMenu) withObject:nil afterDelay:0.35f]; } else { if (_editing) { [self performSelector:@selector(showCorrectionMenu) withObject:nil afterDelay:0.35f]; } } } [self.inputDelegate selectionWillChange:self]; self.markedRange = NSMakeRange(NSNotFound, 0); self.selectedRange = NSMakeRange(index, 0); [self.inputDelegate selectionDidChange:self]; </code></pre> <p>}</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload