gpt4 book ai didi

ios - 在不禁用上下文菜单的情况下管理 UITextfiled 上的长按?

转载 作者:行者123 更新时间:2023-12-01 19:59:56 25 4
gpt4 key购买 nike

我有 UITableView,它的单元格有一个 UITextField。

现在我在 UITextField 中添加了长手势,但它不起作用。当我在文本字段上点击长手势时,它总是显示上下文菜单(选择、复制剪切、过去等)。

我的问题是如何管理 UITextFiled 中的长手势和上下文菜单。

我试过下面的代码:

longGesture = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleLongPress:)];
longGesture.minimumPressDuration = 2.0; //seconds
longGesture.delegate = self;

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{
CGPoint p = [gestureRecognizer locationInView:self.tableView];

NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:p];
if (indexPath == nil) {
NSLog(@"long press on table view but not on a row");
} else if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
NSLog(@"long press on table view at row %ld", indexPath.row);
} else {
NSLog(@"gestureRecognizer.state = %ld", gestureRecognizer.state);
}
}

Tableview 委托(delegate)方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

Note *obj = [self.dataArr objectAtIndex:indexPath.row];

TableViewCell *Cell = [self.tableView dequeueReusableCellWithIdentifier:@"cell"];

if (Cell == nil) {

Cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
Cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
else{
Cell.memoField.text = obj.memoRowText;
}

Cell.memoField.userInteractionEnabled = YES;
[Cell.memoField addGestureRecognizer:longGesture];
Cell.memoField.delegate = self;
Cell.memoField.tag = indexPath.row;

return Cell;
}

最佳答案

您需要在显示上下文菜单的手势和长按手势之间设置失败要求。具体来说,您希望菜单识别器要求您的长按失败(即,您希望菜单识别器等到它排除了长按)。在代码中,一种方法是实现这个委托(delegate)方法。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)longPress shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)other {
if (other.view /* is a text field in the table view */) {
return YES;
} else {
return NO;
}
}

这些方法可能有点令人困惑。
请记住,您可以使用 -[UIGestureRecognizer requireGestureRecognizerToFail:] 添加“静态”故障要求。 ,但在许多情况下,您不必轻易引用两个识别器(例如在本例中)。
在很多情况下,这就足够了。
但是,手势识别系统也让您有机会“即时”安装故障要求。

-gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer: 返回 YES与调用 [second requireFailureOfGestureRecognizer:first] 的效果相同(其中 firstsecond 是该方法的第一个和第二个参数)。

OTOH 从 -gestureRecognizer:shouldRequireFailureOfGestureRecognizer: 返回 YES与调用 [first requireFailureOfGestureRecognizer:second] 的效果相同.

关于ios - 在不禁用上下文菜单的情况下管理 UITextfiled 上的长按?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40277505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com