【问题标题】:IOS Toolbarbutton item not triggering action with scroll barIOS Toolbarbutton项目不触发带有滚动条的动作
【发布时间】:2013-09-18 07:50:16
【问题描述】:

我也为 Scrollview(8images) + Toolbar 编写了代码。当我尝试单击工具栏按钮项时,滚动视图没有按预期返回。下面是代码。

当我单击工具栏按钮时,没有触发“IBAction clickprjinfo”的操作,我已通过连接检查器中的 Barbuttonitem 确认对此 IBACTION 完成了“SentAction”。

在运行时,当我单击按住工具栏按钮 + 触摸 scoolview 屏幕 + 然后释放按钮时,它会触发 IBACTION。

任何人都可以帮助通知我的错误或更好的理解方式。

-(void)viewDidLoad
{
   [super viewDidLoad];
   [self pgcontrolview];
}

-(void) pgcontrolview  {
   pageC.numberOfPages=8;
   pageC.currentPage=0;
   for (int i=1; i<=8; i++)
   {
       UIImageView *images=[[UIImageView alloc]initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",i]]];
       images.frame=CGRectMake((i-1)*1024, 0, 1024, 760);
       [scroller addSubview:images];
   }
   scroller.delegate=self;
   scroller.contentSize=CGSizeMake(1024*8, 760);
   scroller.pagingEnabled=YES;

   UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handle_Tap:)];
   tap.numberOfTapsRequired = 1;
   tap.numberOfTouchesRequired = 1;
   [self.view addGestureRecognizer:tap];
}

-(IBAction)clickprjinfo:(id)sender{
   pageC.currentPage=1;
   CGRect frame=scroller.frame;
   frame.origin.x=0;//frame.size.width*page;
   frame.origin.y=0;
   [scroller scrollRectToVisible:frame animated:YES];
}

【问题讨论】:

    标签: ios uitoolbar uitoolbaritem


    【解决方案1】:

    添加手势委托方法如下

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    // test if our control subview is on-screen
    if ([touch.view isKindOfClass:[UIControl class]]) {
        // we touched a button, slider, or other UIControl
        return NO; // ignore the touch
    }
    return YES; // handle the touch
    }
    

    因为它考虑了 UIButton 点击​​作为 UITapGesture,所以你不需要允许 UIButton 上的 UITapGesture,因为上面的委托方法忽略了 UIControl 上的触摸(它反过来 UIButton)允许执行

    -(IBAction)clickprjinfo:(id)sender操作

    【讨论】:

    • 你能不能多给点,我怎么用这个方法,你的意思是我必须替换方法“handle_Tap”或者在哪里调用这个方法。
    • 在 .h 文件中,您需要将 UIGestureRecognizerDelegate 添加为 @interface DesignCordViewController : UIViewController{}
    • UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handle_Tap:)]; tap.delegate = 自我; tap.numberOfTapsRequired = 1; tap.numberOfTouchesRequired = 1; [self.view addGestureRecognizer:tap];
    • "handle_Tap" 将用于处理手势识别器,其中 -(IBAction)clickprjinfo:(id)sender 用于 Barbuttonitem 操作
    • 我必须在语句“[self.view addGestureRecognizer:tap]”之前添加“tap.delegate = self”。然后一切都很完美。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多