[英]iOS — is it possible to force a UILabel subclass object to become the first responder?
有沒有辦法做到這一點?
我嘗試將以下內容放入子類中:
- (BOOL)canBecomeFirstResponder
{
return YES;
}
但是當我向對象發送了一個becomeFirstResponder消息時,它仍然沒有成為第一個響應者。
對的,這是可能的。 你應該:
覆蓋becomeFirstResponder
以返回YES
。
將userInteractionEnabled
設置為YES
。
添加UITapGestureRecognizer
來處理點擊。
從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.