2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
कदाचित् वयं एतादृशं अन्तरक्रियाशीलं परिदृश्यं प्राप्नुमः : अस्माकं UITableView अस्ति
इदं पॉप-अप विण्डो मध्ये स्थापयन्तु एतत् पॉप्-अप विण्डो स्लाइड् कृत्वा (हस्तेन स्वाइप् कृत्वा) अन्तर्धानं कर्तुं शक्यते ततः एतत् UITableView pop-up विण्डो मध्ये स्थापितं भवति तथा च काञ्चन सामग्रीं प्रदर्शयितुं स्क्रॉल कर्तुं शक्यते उत्पादसूचनाः टिप्पण्याः च (Douyin इत्यस्य टिप्पणी-पॉप-अप-विण्डो-सदृशम्), तथा च अधः स्लाइड्-करणसमये, यदि tableView उपरि स्लाइड्-कृतम् अस्ति, तर्हि भवान् स्लाइडिंग्-इशारस्य प्रतिक्रियां दातुं शक्नोति, पॉप-अप-विण्डो-इत्यस्य अधः स्लाइड्-करणं च निरन्तरं कर्तुं शक्नोति
प्रथमं, अस्माकं pop-up view मध्ये tableView अस्ति कोष्ठ।अतः इदं पॉप-अप-दृश्यं इशाराणां प्रतिक्रियां ददाति प्रॉक्सी अस्ति
चतुष्कोणं च इञ्च
वयं pop-up विण्डो मध्ये स्लाइडिंग् इशारान् योजयामः, प्रतिक्रियाविधिः च handlePan अस्ति:
परीक्षणद्वारा वयं तत् प्राप्तवन्तःयदा अस्माकं हस्तः tableView इत्यत्र स्क्रॉल करोति तदा प्रत्येकं वयं निष्पादयामः
tableView इत्यस्य प्रॉक्सी मेथड् scrollViewDidScroll इत्यस्मात् पूर्वं handlePan मेथड् निष्पादितं भविष्यति ।
अपि च, स्वाइप्-काले (यदि हस्तः पटलात् न त्यजति तर्हि स एव स्वाइप् गण्यते),
यदि प्रतिक्रियाविधौ handlePan इत्यत्र सेट् कृतम् अस्ति
self.tableView.panGestureRecognizer.enabled = NO कारणं भविष्यति
self.tableView अस्याः स्लाइडस्य समये स्क्रॉल न करिष्यति, यद्यपि self.tableView.panGestureRecognizer.enabled = YES सेट् कृतः अस्ति ततः परं self.tableView.panGestureRecognizer.enabled = NO, तथापि एतत् स्क्रॉल न करिष्यति ।
एतेन ज्ञायते यत् **स्लाइडिंग् इशारस्य प्रतिक्रियारूपेण self.tableView.panGestureRecognizer.enabled = NO इत्यस्य सर्वोच्चप्राथमिकता अस्ति
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"哈哈哈哈哈这里是执行scrollViewDidScroll self.panNum是%ld", self.panNum);
}
- (void)handlePan:(UIPanGestureRecognizer *)pan
{
self.tableView.panGestureRecognizer.enabled = YES;
NSLog(@"哈哈哈哈哈这是第%ld次响应滑动手势handlePan 方法", self.panNum);
if (self.panNum % 2 == 0) {
self.tableView.panGestureRecognizer.enabled = NO;
} else {
self.tableView.panGestureRecognizer.enabled = YES;
}
self.tableView.panGestureRecognizer.enabled = YES;
}
उपर्युक्तपरीक्षायाः सम्पूर्णः कोडः
//
// LBPangestureController.m
// TEXT
//
// Created by mac on 2024/7/7.
// Copyright © 2024 刘博. All rights reserved.
//
#import "LBPangestureController.h"
@interface LBPangestureController () <UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate>
@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) UIPanGestureRecognizer *pangesture;
@property (nonatomic, assign) NSInteger panNum;
@end
@implementation LBPangestureController
- (void)viewDidLoad {
[super viewDidLoad];
[self.view addSubview:self.tableView];
[self.view addGestureRecognizer:self.pangesture];
// Do any additional setup after loading the view.
}
- (void)handlePan:(UIPanGestureRecognizer *)pan
{
self.tableView.panGestureRecognizer.enabled = YES;
NSLog(@"哈哈哈哈哈这是第%ld次响应滑动手势handlePan 方法", self.panNum);
if (self.panNum % 2 == 0) {
self.tableView.panGestureRecognizer.enabled = NO;
} else {
self.tableView.panGestureRecognizer.enabled = YES;
}
self.tableView.panGestureRecognizer.enabled = YES;
}
#pragma mark - UITableViewDelegate, UITableViewDataSource
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class])];
cell.textLabel.text = [NSString stringWithFormat:@"%ld", indexPath.row];
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 100;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 60;
}
#pragma mark - uiscrollViewdelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"哈哈哈哈哈这里是执行scrollViewDidScroll self.panNum是%ld", self.panNum);
}
#pragma mark - gesturedelegate
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
if (gestureRecognizer == self.pangesture) {
self.panNum ++;
}
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if (gestureRecognizer == self.pangesture && otherGestureRecognizer == self.tableView.panGestureRecognizer) {
return YES;
}
return NO;
}
#pragma mark - lazy load
- (UITableView *)tableView
{
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 100, 300, 400) style:UITableViewStylePlain];
[_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])];
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.backgroundColor = [UIColor cyanColor];
}
return _tableView;
}
- (UIPanGestureRecognizer *)pangesture
{
if (!_pangesture) {
_pangesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
_pangesture.delegate = self;
}
return _pangesture;
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end