def METHOD_NAME(self, position, main, random_range=(-0.05, 0.05), distance_check=True, skip_first_screenshot=True):
    """
    Set scroll to a specific position.
    Args:
        position (float, int): 0 to 1.
        main (ModuleBase):
        random_range (tuple(int, float)):
        distance_check (bool): Whether to drop short swipes
        skip_first_screenshot:
    Returns:
        bool: If dragged.
    """
    logger.info(f'{self.name} set to {position}')
    self.drag_interval.clear()
    self.drag_timeout.reset()
    dragged = 0
    if position <= self.edge_threshold:
        random_range = np.subtract(0, self.edge_add)
    if position >= 1 - self.edge_threshold:
        random_range = self.edge_add
    while 1:
        if skip_first_screenshot:
            skip_first_screenshot = False
        else:
            main.device.screenshot()
        current = self.cal_position(main)
        if abs(position - current) < self.drag_threshold:
            break
        if self.length:
            self.drag_timeout.reset()
        else:
            if self.drag_timeout.reached():
                logger.warning('Scroll disappeared, assume scroll set')
                break
            else:
                continue
        if self.drag_interval.reached():
            p1 = random_rectangle_point(self.position_to_screen(current), n=1)
            p2 = random_rectangle_point(self.position_to_screen(position, random_range=random_range), n=1)
            main.device.swipe(p1, p2, name=self.name, distance_check=distance_check)
            self.drag_interval.reset()
            dragged += 1
    return dragged