有沒有辦法做到這一點?iOS - 是否可以強制UILabel子類對象成爲第一響應者?
我試圖把下面到子類:
- (BOOL)canBecomeFirstResponder
{
return YES;
}
但是,當我發送的對象becomeFirstResponder消息,它仍然沒有成爲第一個響應者。
有沒有辦法做到這一點?iOS - 是否可以強制UILabel子類對象成爲第一響應者?
我試圖把下面到子類:
- (BOOL)canBecomeFirstResponder
{
return YES;
}
但是,當我發送的對象becomeFirstResponder消息,它仍然沒有成爲第一個響應者。
我沒有確定的答案,只有幾個(也許是瘋狂的)想法:你是否還嘗試覆蓋becomeFirstResponder
返回YES
?它有userInteractionEnabled
也設置爲YES
?
否則,使它成爲一個自定義的UIButton,而不是一個自定義的UILabel ...
是的,這是可能的。你應該:
覆蓋becomeFirstResponder
返回YES
。
設置userInteractionEnabled
到YES
。
添加一個UITapGestureRecognizer
來處理水龍頭。
從龍頭處理程序調用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];
}
手勢添加到您的標記以檢測水龍頭。
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];
}
的UILabel成爲第一響應?你想讓它迴應什麼? – kennytm 2010-11-03 17:18:35
它從UIResponder繼承,因此它具有此功能。 – Ben 2010-11-03 17:21:24
我正在使用某人的圖書館,當具有特定屬性的對象成爲第一響應者時,它會執行某些操作。它也發送消息給第一響應者。我碰巧想把所有這些與我的標籤綁定在一起。 – 2010-11-03 17:44:31