簡體   English   中英

iOS - 是否可以強制UILabel子類對象成為第一個響應者?

[英]iOS — is it possible to force a UILabel subclass object to become the first responder?

有沒有辦法做到這一點?

我嘗試將以下內容放入子類中:

- (BOOL)canBecomeFirstResponder 
{
    return YES;
}

但是當我向對象發送了一個becomeFirstResponder消息時,它仍然沒有成為第一個響應者。

對的,這是可能的。 你應該:

  1. 覆蓋becomeFirstResponder以返回YES

  2. userInteractionEnabled設置為YES

  3. 添加UITapGestureRecognizer來處理點擊。

  4. 從tap處理程序調用becomeFirstResponder

您甚至可以覆蓋inputView以獲得屏幕底部的輸入控件。 否則什么都沒有。

這對我有用。

子類UILabel並覆蓋這些方法:

- (BOOL)canBecomeFirstResponder {
        return YES;
    }

    - (BOOL)canPerformAction:(SEL)action
                  withSender:(id)sender
    {
        return (action == @selector(copy:));
    }

    - (void)copy:(id)sender {
        [[UIPasteboard generalPasteboard] setString:self.text];
    }

將Gesture添加到標簽中以檢測水龍頭。

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(LongPressDetected:)];
[_messageLabel addGestureRecognizer:longPress];

處理手勢事件,呈現具有所需幀的UIMenuController:

- (void)LongPressDetected:(UILongPressGestureRecognizer*)gesture {

        [_messageLabel becomeFirstResponder];
        [[UIMenuController sharedMenuController] setTargetRect:_messageLabel.bounds inView:_messageLabel];
        [[UIMenuController sharedMenuController] setMenuVisible:YES animated:NO];
    }

我沒有明確的答案,只有一些(也許是瘋狂的)想法:你是否也嘗試覆蓋了becomeFirstResponder以返回YES 它是否也將userInteractionEnabled設置為YES

否則,使其成為自定義UIButton而不是自定義UILabel ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM