I think that you can accomplish what you want by using a custom search function. The syntax of a search function is
function [successSearch,xBest,fBest,funccount] = ...
Here, the successSearch output is entirely under your control, and you can set it to false if the search did not satisfy whatever criterion you like, such as an insufficient decrease in fBest compared to optimValues.fval. In other words, take whatever search method you currently use, save its code in a file with a new name, modify the code as you like, and set patternsearch options to call the new search method.
MATLAB mathematical toolbox documentation