【问题标题】:Can i update value of label by long press on it - iOS我可以通过长按来更新标签的值吗 - iOS
【发布时间】:2014-04-24 08:26:33
【问题描述】:

我在 iPhone iOS7 设备上使用 Xcode 5 编写了一个简单的应用程序。 我有一个以 +/- 按钮递增的标签,但我想为用户提供将他的号码插入此标签的选项。 我怎么能用长按识别器做到这一点? 谢谢。

【问题讨论】:

  • 如果您希望 UITextView 可编辑,您必须使用它。
  • 我试过了,我有一个输入数字后不会消失的键盘。
  • 当您在文本视图之外点击时,您是否希望关闭键盘?
  • 在我按下键盘上的完成后

标签: ios7 xcode5 uilabel long-press


【解决方案1】:

使用UILongPressGestureRecognizerUITextView

UILongPressGstureRecognizer 属性添加到您的视图控制器:

@property UILongPressGestureRecognizer *gestureRecognizer;

您需要声明您的视图控制器符合UITextViewDelegateUIGestureRecognizerDelegate 协议:

@interface ViewController : UIViewController<UITextViewDelegate, UIGestureRecognizerDelegate>

viewDidLoad:

self.textView.editable = NO;
self.textView.delegate = self;
self.gestureRecognizer = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(textViewLongPressed:)];
self.gestureRecognizer.delegate = self;
[self.textView addGestureRecognizer:self.gr];

这是长按文本视图时会调用的方法:

-(void) textViewLongPressed:(UILongPressGestureRecognizer *)sender
{
    self.textView.editable = YES;
    [self.textView becomeFirstResponder];
}

UIGestureRecognizerDelegate实现这个方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    if (self.gestureRecognizer == gestureRecognizer){
        return YES;
    }
    return NO;
}

当你完成编辑文本视图时

-(void) textViewDidEndEditing:(UITextView *)textView
{
    self.textView.editable = NO;
}

按下回车键时关闭键盘:

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if ([text isEqualToString:@"\n"])
        [textView resignFirstResponder]; // or [textView endEditing:YES]

    return YES;
}

【讨论】:

  • 1.键盘没有消失 2.我有一个警告:从不兼容的类型'GoalsSetUpViewController *const __strong'分配给'id'
  • 如果我没有输入数字或在视图中按另一个按钮,可以关闭键盘吗?
  • 如果我第二次长按键盘没有出现
  • 不,但是如果你在按下按钮时在文本视图上调用resignFirstResponder,它将被关闭。
  • 谢谢,为什么第二次按下没有键盘?
猜你喜欢
  • 1970-01-01
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多